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