Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-12-2016
Belen12 Belen12 is offline
Miembro
NULL
 
Registrado: may 2016
Posts: 29
Poder: 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
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Duda con CheckListBox johan Varios 4 20-09-2007 20:28:22
De CheckListBox tabla Camilo Varios 3 14-07-2007 03:53:18
CheckListBox JAI_ME Varios 3 24-01-2007 17:19:30
checklistbox argel OOP 4 16-06-2006 23:14:50
CheckListBox camelumi Varios 4 26-10-2004 21:11:33


La franja horaria es GMT +2. Ahora son las 18:28:31.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi