Hola Belen12.
A mi tampoco me queda clara la forma en que deseas implementar la solución. Entiendo que tenes tres tablas,
Código:
Empleados
---------
ID
...
Puestos
-------
ID
...
Asignado
--------
Empleados_ID,
Puestos_ID
donde la tabla PUESTOS ya tiene cargado los cargos disponibles y la tabla ASIGNADO se encarga de almacenar las distintas relaciones: empleado_N -> cargo_1, cargo_2, ..., cargo_N.
Pero, ¿ Por que hacer la elección del puesto desde otro formulario ? Podrías hacerlo todo desde el formulario de ingreso de empleado, una imágen de ejemplo a lo que me refiero:
Si no entendí mal tu planteo, podría resultarte una opción mas sencilla de mantener y el código tampoco es muy complejo:
Código Delphi
[-]
procedure TForm1.FormCreate(Sender: TObject);
begin
qyPuesto.Open;
qyPuesto.DisableControls;
qyPuesto.First;
try
while not qyPuesto.Eof do
begin
CheckListBox1.Items.AddObject(
qyPuesto.FieldByName('CARGO').AsString,
TObject(qyPuesto.FieldByName('ID').AsInteger));
qyPuesto.Next;
end;
qyPuesto.First;
finally
qyPuesto.EnableControls;
end;
...
end;
procedure TForm1.btnSaveClick(Sender: TObject);
var
i: Integer;
begin
...
... ( guardar datos del empleado )
...
for i := 0 to CheckListBox1.Items.Count -1 do
begin
if CheckListBox1.Checked[i] then
begin
tbAsignado.Insert;
tbAsignado.FieldByName('ID_EMPLEADO').AsInteger :=
tbEmpleado.FieldByName('ID').AsInteger;
tbAsignado.FieldByName('ID_PUESTO').AsInteger :=
Integer(CheckListBox1.Items.Objects[i]);
tbAsignado.Post;
end;
end;
end;
Saludos
