Ver Mensaje Individual
  #1  
Antiguo 12-12-2016
Belen12 Belen12 is offline
Miembro
NULL
 
Registrado: may 2016
Posts: 29
Reputación: 0
Belen12 Va por buen camino
Ayuda con un CheckListBox

Hola e realizado una pregunta similar antes ( que logre solucionar gracias a ustedes) ahora lo que necesito es realizar una mejora. Resulta que tengo un formulario donde se listan empleados y estos tienen puestos de trabajos. Yo al selecionar uno realizo la modificacion abro otro formulario en el cual se encuentra un listbox que lista sus puestos de trabajo.este se carga a travez de una consulta de un query. lo que sucede es lo siguiente realize una consulta y cuando se carga ese listbox y se ponen en check sus puestos de trabajo. Pero yo lo que necesito es que se carguen todos los puestos y luego se pongan en check los que el tiene no se si me doy a entender. Yo lo que eh intentado es hacer 2 consultas una para llenar todos los puestos y otra para luego poner en true segun el puesto que tengan. El problema viene aqui cuando se cargan los puesto de ese empleado en check se crea un duplicado es decir por ejemplo si uno es vendedor en list box se carga un puesto vendedor y otro puesto vendedor pero este en check.

Código Delphi [-]
begin

   fempleados := tfempleados.Create(self) ;
   fmodulo.tEmpleados.Active:=True;
// Con este cargo primero todos los puesto//
   fmodulo.qGeneral.Close;
   fmodulo.qGeneral.SQL.Clear;
   fmodulo.qGeneral.SQL.Add('select * from puesto');
   fmodulo.qGeneral.SQL.Add('where estadopuesto=1');
   fmodulo.qGeneral.Open;
    while not fmodulo.qGeneral.Eof do
    begin
        fEmpleados.CheckListBox1.Items.AddObject(
        fmodulo.qGeneral.FieldByName('nombrepuesto').AsString,
        TObject(fmodulo.qGeneral.FieldByName('idpuesto').AsInteger));
      fmodulo.qGeneral.Next;
    end;

// esto lo uso para abrir los dbedit en forma de edit
if fModulo.tEmpleados.Locate('idempleado',fmodulo.qEmpleados['idempleado'],[]) then;        //localiza un registro
 begin
  empleado:= fmodulo.qEmpleados.FieldByName('idempleado').AsInteger;
  fmodulo.tEmpleados.Edit;
/// de aqui uso la consulta para buscar el puesto que le corresponde a ese empleado
       fmodulo.qPuestos.Close;
       fmodulo.qPuestos.SQL.Clear;
       fmodulo.qPuestos.SQL.Add('select * from puesto');
       fmodulo.qPuestos.SQL.Add('inner join asignado on asignado.idpuesto=puesto.idpuesto');
       fmodulo.qPuestos.SQL.Add('inner join empleados on empleados.idempleado=asignado.idempleado');
       fmodulo.qPuestos.SQL.Add('where empleados.idempleado= :id ');
       fmodulo.qPuestos.ParamByName('id').AsInteger:= empleado;
       fmodulo.qPuestos.Open;
       if not fmodulo.qPuestos.IsEmpty then
       begin
         fmodulo.qPuestos.First;

         while not fmodulo.qPuestos.Eof do
         begin
          fempleados.CheckListBox1.Items.AddObject(
          fmodulo.qPuestos.FieldByName('nombrepuesto').AsString,
          TObject(fmodulo.qPuestos.FieldByName('idpuesto').AsInteger)); // e intentado sacando esta linea ya que es la que me carga el doble registro
                                                          // pero si la saco me marca en check solo el ultimo registro y si la dejo me pone el duplicado 
                                                                                                  

          fempleados.CheckListBox1.Checked[fempleados.CheckListBox1.Items.Count-1]:= true; //este lo uso para poner el check
          fmodulo.qPuestos.Next;
       end;
       end;
 end;
  fempleados.Caption:= 'Modificacion de Empleados' ;
 fempleados.ShowModal;

 fmodulo.tEmpleados.Active:=False;
 fmodulo.qEmpleados.Refresh;
end;

alguna ayuda? no se si mi problema esta en la doble consulta. si es asi como podria realizar solo una y cargar lo que necesito. Aclaro que yo agregue la primera consulta para traer tambien los puestos que ese empleado no tiene ya que realizando la modificacion le doy la opcion al usuario de asignarle otro puesto si lo desea- Dejo una imagen espero que se vea bien para aclarar mas el problema que se presenta gracias por la ayuda desde ya
Imágenes Adjuntas
Tipo de Archivo: png subi (1).png (14,5 KB, 18 visitas)
Responder Con Cita