Hola compañeros.
Antes de comenzar: Delphi7 y Firebird 2.1.
Tengo dos IBDataSets en relación maestro/detalle. Les adjunto los campos significativos para clarificar:
Código Delphi
[-]
tbMaes: TIBDataSet;
tbMaes_ID: TIntegerField;
tbMaesCod: TIBStringField; tbMaesFec: TDateTimeField; tbDetal: TIBDataSet;
tbDetal_ID: TIntegerField; tbDetalRDia: TIntegerField;
Tengo que ingresar y guardar los campos del archivo detalle antes de que todos los campos del maestro
hayan sido completados, así lo requiere el ingreso.
Bástaría con hacer un post y un edit antes de guardar el detalle para funcionar correctamente,
pero se dispara lógicamente una excepción por no estar ingresados los campos "not null" en el maestro.
La solución que encontré, fue Activar CachedUpdates en los IBDataSets Maestro y detalle, para poder
realizar el post y evitar la excepción, ya que todavía los datos no han sido enviado al servidor.
Luego al guardar los IBDataSets involucrados hice:
Código Delphi
[-]
tbDetal.DataSource:= nil;
IBDatabase.ApplyUpdates([tbMaes,tbDetal]);
IBTransaction.CommitRetaining;
tbDetal.DataSource:= dsMaes;
Funciona bién. Pero me queda la duda si es buena manera de hacerlo o si existe otra opción...
Espero haber sido claro y gracias por leer estas líneas.
Saludos.