Ver Mensaje Individual
  #4  
Antiguo 13-12-2016
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

Si te entendí bien podrías hacer algo similar a esto:
Código Delphi [-]
...
procedure TForm1.FormCreate(Sender: TObject);
begin
  // Cargar en el CheckListBox los cargos de la tabla PUESTO
  unQuery.Close;
  unQuery.SQL.Text := 'SELECT ID, NOMBREPUESTO FROM PUESTO';
  unQuery.Open;
  while not unQuery.Eof do
  begin
    CheckListBox1.AddItem( unQuery.FieldByName( 'NOMBREPUESTO' ).AsString,
      TObject(unQuery.FieldByName ( 'ID' ).AsInteger ) );
    unQuery.Next;
  end;
  unQuery.Close;
end;

procedure TForm1.ActualizarPuestos( const EmpID: Integer );
var
  i : Integer;
begin
  // Quitar tildes a los items del CheckListBox 
  for i := 0 to CheckListBox1.Items.Count - 1 do
    CheckListBox1.Checked[i] := False;

  // Seleccionar los puestos asignados al empleado EmpID
  unQuery.Close;
  unQuery.SQL.Clear;
  unQuery.SQL.Add( 'SELECT P.ID AS PUESTOID FROM EMPLEADOS E' );
  unQuery.SQL.Add( 'INNER JOIN ASIGNADOS A ON E.ID = A.EMPLEADO_ID' );
  unQuery.SQL.Add( 'INNER JOIN PUESTOS P ON P.ID = A.PUESTO_ID' );
  unQuery.SQL.Add( 'AND E.ID = :EMPID' );
  unQuery.ParamByName( 'EMPID' ).AsInteger := EmpID;
  unQuery.Open;

  // Poner tildes en aquellos cargos que EmpID tenga asignados
  while not unQuery.Eof do
  begin
    i := CheckListBox1.Items.IndexOfObject(
      TObject( unQuery.FieldByName( 'PUESTOID' ).AsInteger ) );
    if i <> -1 then
      CheckListBox1.Checked[i] := True;
    unQuery.Next;
  end;
end;
...

Llamada ejemplo:
Código Delphi [-]
begin
  ActualizarPuestos( SpinEdit1.Value );
  ...
De ese modo se carga una sola vez la totalidad de puestos en el CheckListBox y se marcan con un tilde los puestos que tiene asignados el empleado cuyo ID se le envía al procedimiento ActualizarPuestos.

Espero haberte interpretado bien...

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita