Ver Mensaje Individual
  #2  
Antiguo 06-04-2007
joal joal is offline
Miembro
 
Registrado: jun 2006
Posts: 10
Reputación: 0
joal Va por buen camino
Talking Ok. Ya me respondi yo solo.

Después de haber leído algunos posteos como los de hacer Refresh sobre el datasource, el que a veces no funciona como comenta vtdeleon y algunos otros comentarios, empece a usar el método heurístico (lease pruebayerror + aversipega) a fin de tratar de resolver esto.

La solución la encontré validando si había una transacción activa en la forma padre y de ser afirmativo, decir que la terminara. El código quedó como sigue.

Código Delphi [-]
procedure Tfrm_HistoriaClinica.PopulaHeredofamiliares;
begin
  lb_Heredofamiliares.Items.Clear;
  // esto no deberia ir en la forma invocada?
  if dm_Heredofamiliares.ibt_IBTransaction.Active then
    dm_Heredofamiliares.ibt_IBTransaction.Commit;
  with dm_Heredofamiliares.ibq_IBQuery do
    begin
    Close;
    ... etc.

lo que me pareció extraño es que tengo que hacer referencia a la transacción de la forma padre (HistoriaClinica) en lugar de la transaccion de la forma hija (Heredofamiliar) ya que fue con los recursos de esta última con lo que realice la operación sobre la BD e hice la transacción. No se si es que al refererirse a la misma tabla, el problema con el commit sea a nivel sesión de BD y no a nivel de forma.

enfin, lo dejo por si a alguien más le es de utilidad. gracias
Responder Con Cita