Ver Mensaje Individual
  #9  
Antiguo 26-09-2012
novato_erick novato_erick is offline
Miembro
 
Registrado: ago 2010
Ubicación: Panamá
Posts: 396
Reputación: 14
novato_erick Va por buen camino
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...
Responder Con Cita