Delphi - Ayuda CheckListBox

 
Vista:

Ayuda CheckListBox

Publicado por Belen (5 intervenciones) el 03/12/2016 02:54:53
Hola gente tengo un problema tengo un CheckListBox en el cual necesito poner en check sus item segun el idempleado que selecciono.
Esto funciona de la siguiente manera. Tengo 2 formularios uno llamado listadoEmpleados y el otro fEmpleados
en el listado de empleados tengo un dbgrid en el cual listo empleados que tienen varios puestos de trabajos todo esto se visualiza en ese dbgrid. Luego en darle al boton "modificar" me abre otro formulario "fEmpleados" en el cual se encuentra el checklistbox. Entonces hize el codigo que pondre abajo que funciona de la siguiente manera al eleguir un empleado de la grilla guardo su id en una variable y esa variable la uso para comparar luego que aca es donde esta el problema que lo que necesito es como mensione antes es poner en true los check segun si ese empleado tiene esos puestos asignados

para realizar las consulta uso componentes query de zeos
qEmpleados hace referencia al query que tiene asociado el dbgrid
qGeneral es para realizar dicha consulta y llenar el checklistbox el problema es que se queda vacio este
alguna solucion ?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
begin
 empleado:= fmodulo.qEmpleados.FieldByName('idempleado').AsInteger;
       fmodulo.qGeneral.Close;
       fmodulo.qGeneral.SQL.Clear;
       fmodulo.qGeneral.SQL.Add('select nombrepuesto from puesto');
       fmodulo.qGeneral.SQL.Add('inner join asignado on asignado.idpuesto=puesto.idpuesto');
       fmodulo.qGeneral.SQL.Add('inner join empleados on empleados.idempleado=asignado.idempleado');
       fmodulo.qGeneral.SQL.Add('where empleados.idempleado= :id');
       fmodulo.qGeneral.Open;
 
       fmodulo.qGeneral.ParamByName('id').AsInteger:= empleado;
 
       if not fmodulo.qgeneral.IsEmpty then
       begin
         fmodulo.qgeneral.First;
       while not fmodulo.qGeneral.Eof do
       begin
         fempleados.CheckListBox1.Items.Add(fmodulo.qGeneral.FieldByName('nombrepuesto').AsString);
         fempleados.CheckListBox1.Checked[fempleados.CheckListBox1.Items.Count-1]:= true;
 
         fmodulo.qGeneral.Next;
 
       end;
       end;


luego probe hacer lo siguiente cambiar
1
2
fmodulo.qGeneral.SQL.Add('where empleados.idempleado= :id // cambie esta linea por = 1
y el error es el siguiente " access violation at address " y me marca la siguiente linea fempleados.CheckListBox1.Items.Add(fmodulo.qGeneral.FieldByName('nombrepuesto').AsString);

alguna ayuda gracias ?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Ayuda CheckListBox

Publicado por E.T. (1201 intervenciones) el 03/12/2016 18:32:34
El parámetro se debe asignar antes de abrir el query
1
2
3
4
...
fmodulo.qGeneral.ParamByName('id').AsInteger:= empleado;
fmodulo.qGeneral.Open;
...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ayuda CheckListBox

Publicado por Belen (5 intervenciones) el 05/12/2016 03:12:11
Hola no me di cuenta. ya lo cambie pero aun asi cuando intento entrar me sale error " access violation at address " que marque antes en la linea
1
fempleados.CheckListBox1.Items.Add(fmodulo.qGeneral.FieldByName('nombrepuesto').AsString);
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ayuda CheckListBox

Publicado por E.T. (1201 intervenciones) el 05/12/2016 18:39:23
El codigo está bien, lo que puede pasar es que tu form no esté creada, ejecutas el codigo en un form distinto a fempleados o desde fempleados? si es asi asegurate de que tu form este creado
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar