Ver Mensaje Individual
  #1  
Antiguo 13-03-2012
MartinS MartinS is offline
Miembro
NULL
 
Registrado: nov 2011
Ubicación: Villa Cacique - Argentina
Posts: 283
Reputación: 13
MartinS Va por buen camino
Gestión de transacciones

Hola gente: El tema es el siguiente.
Estoy desarrollando un sistema que como todos existen altas, bajas y modificaciones y me he encontrado con el dilema del uso de transacciones. Actualmente no puedo usar StartTransaccion porque me salta el error que existe una transaccion activa. Se que estas inician automaticamente pero no se de donde cambiar para que esto no suceda y acotar el tiempo de la transaccion. Setee el AllowAutoStart a false del componente IbTransaction pero igual (siguen automaticas). Las propiedades del componente estan en Read Committed.

En definitiva deseo hacer algo como esto:

Código Delphi [-]
   if MessageDlg('¿Desea aplicar los cambios?',mtConfirmation,mbYesNo,0) = MrYes then
   Begin
      StatusBar1.SimpleText := ' Aplicando cambios en base de datos, Espere por favor...';
      Dm.Transaccion.StartTransaction;
      Try
        Dm.DatosInternos.Post;
        Dm.Transaccion.Commit;
      except
        Dm.Transaccion.Rollback;
      End;
      Bloqueo(False);
      StatusBar1.SimpleText := '';
   end;

si compruebo por InTransaccion siempre existe una transaccion abierta y no se a partir de cuando la inicia.
Suelo usar para cerrar las transacciones el commitRetaining o RollbackRetaining ya que si aplico Commit o Rollback a secas me cierra el tambien el Dataset.
Obviamente algo estoy haciendo mal o muy mal y necesito vuestra orientación.-

Uso Delphi XE y FireBird 2.5 .- Gracias de antemano
Responder Con Cita