Hola Vales08.
Para hacer lo que buscas creo que tendrías que tener:
.- Una tabla MEDICOS.
.- Una tabla COBERTURAS.
.- Una tabla COBERT_X_MEDICO.
Donde la tabla COBERT_X_MEDICO está en relación Master/detail con MEDICOS por el campo ReferMedico / Medico_ID.
Para ejemplificar tu caso usemos:
.- DBGridMedicos.
.- DBGridCoberturas.
.- DBGridDetalle.
En DBGridCoberturas ponemos la propiedad: Options -> dgMultiSelect a True, así podrás elegir una, varias o todas las coberturas (Ctr+click o Shift+Flecha abajo).
Luego la asignación la podes hacer mediante
Drag&Drop o en el evento
OnClick de un TButton, esta última forma es la que uso para el ejemplo.
Código Delphi
[-]
procedure TForm1.Button1Click(Sender: TObject);
var
i: Integer;
begin
for i:= 0 to GridCoberturas.SelectedRows.Count -1 do
begin
GridCoberturas.DataSource.DataSet.GotoBookmark(Pointer(GridCoberturas.SelectedRows.Items[i]));
GridDetalle.DataSource.DataSet.Append;
GridDetalle.DataSource.DataSet.FieldByName('ReferMedico').AsInteger:=
GridMedicos.DataSource.DataSet.FieldByName('Medico_id').AsInteger;
GridDetalle.DataSource.DataSet.FieldByName('Cobertura').AsString:=
GridCoberturas.DataSource.DataSet.FieldByName('Cobertura').AsString;
GridDetalle.DataSource.DataSet.Post;
end;
end;
DBGridCoberturas, sólo debería mostrarse para que el usuario pueda realizar la elección de las posibles coberturas y luego cerrarse. Cuando quieras mostrar las coberturas que trabaja un médico usas un DBGrid u otro componente que haga referencia a la tabla COBERT_X_MEDICO y te las mostrará.
Espero haber interpretado lo que querías hacer...
Saludos.