yo lo hago de la siguiente manera, espero te sirva:
cargo las listas con una funcion:
cargaPacientes(cbNombres); // aqui mando cargar en el combo los nombres de los pacientes por ejemplo
y la funcion es algo parecido a esto:
Procedure CargaPacientes(Pacientes: TComboBox);
begin
sql:='Select id_paciente as ID, nombres || '' '' || paterno || '' '' || materno as Nombre'+
' From SS_C_PACIENTE Where fecha_baja is null order by 1';
EjecutaSQL(md.ADOQuery,sql,true);
Pacientes.Clear;
while not md.ADOQuery.Eof do
begin
Pacientes.Add(md.ADOQuery.FieldByName('Nombre').AsString,
md.ADOQuery.FieldByName('ID').AsString); // aqui tienes que cambiar algo para que jale
md.ADOQuery.Next;
end;
end;
luego cuando cambio de paciente hago lo siguiente:
sql:='select Importe_Sesion '+
' from SS_C_EMPLEADO_IMPORTE_PAGO IP '+
' join SS_C_EMPLEADO E on (IP.ID_EMPLEADO=E.ID_EMPLEADO) '+
' join SS_C_PACIENTE P on (P.ID_TERAPEUTA=E.ID_EMPLEADO) '+
' where P.ID_PACIENTE='+ cbNombres.CurrentID; // aqui tienes que modifica pa que te jale
EjecutaSQL(md.ADOQuery,sql,true); // en lugar de asignar todos los valores hice una funcionsita
if not md.ADOQuery.Eof then
begin
edImporte.Text:= md.ADOQuery.FieldByName('Importe_Sesion').AsString;
MontoTerapia:= md.ADOQuery.FieldByName('Importe_Sesion').AsInteger;
end
else
edImporte.Text:='';
Y asi todo queda de forma manual y cuando por ejemplo ELIMINAS un registro vuelves a mandar a traer a la primer funcion cargaPacientes(cbNombres);
y primero limpia el combobox y luego carga los pacientes, de esa forma YA NO VERAS INFORMACION ELIMINADA.
te repito es como yo lo hago, no se si te sirva, espero que si, saludos!!!