Gracias eficsa y elaguna, de ambas parte creo que encontré la solución:
Mi DB es en Firebird, los componente son de DBExpress, y la aplicacion es multiusuario Cliente Servidor.... Asi que me tome ya la Panadol ExtraFuerte....
En firebird realice lo siguiente:
Código SQL
[-]
CREATE GENERATOR AGENDAID_AGENDA;
SET GENERATOR AGENDAID_AGENDA TO 0;
En un TSQLQuery llamado qCapturaId en la propiedad String hice esto:
Código SQL
[-]
select gen_id(AGENDAID_AGENDA, 1) nuevo_id from rdb$database;
En el ClientDataSet utilice estos Eventos:
AfterApplyUpdate
Código Delphi
[-]
procedure TdmLogicaNegocio.cdsAgendaAfterApplyUpdates(Sender: TObject;
var OwnerData: OleVariant);
begin
cdsAgenda.Close;
cdsAgenda.Open;
end;
En el Evento AgendaNewRecord
Código Delphi
[-]
procedure TdmLogicaNegocio.cdsAgendaNewRecord(DataSet: TDataSet);
begin
dmConecta.qCapturaID.Open;
try
cdsAgendaID_AGENDA.AsInteger := dmConecta.qCapturaIDNUEVO_ID.AsInteger;
finally
dmConecta.qCapturaID.Close;
end;
end;
En el Evento ReconcileError
Código Delphi
[-]
procedure TdmLogicaNegocio.cdsAgendaReconcileError(
DataSet: TCustomClientDataSet; E: EReconcileError; UpdateKind: TUpdateKind;
var Action: TReconcileAction);
begin
Action := HandleReconcileError(DataSet, UpdateKind, E);
end;
En el evento OnShow de mi formulario pido que me abra el ClientDataSet y lo ponga en modo Insert,
Así que simplemente capturo el id que me me genero Firebird lo inserto en mi tabla agenda y mi tabla Recordar.
Bueno me funciono, ahora estoy haciendo las prueba con multiples usuarios y me ah trabajado bien...