[Lazarus-es] zeos-firebird: ejemplo transacciones

José Mejuto joshyfun en gmail.com
Vie Mayo 14 19:49:21 CEST 2010


Hello Paola,

Friday, May 14, 2010, 7:38:55 PM, you wrote:

>>>    vTrans := DBMain.fdb.Intransaction;
>>>    try
>>>       if (not vTrans) then DBMain.fdb.StartTransaction;
>>>       Graba;
>>>       if (not vTrans) then DBMain.fdb.Commit;
>>>    finally
>>>       if (not vTrans) and DBMain.fdb.Intransaction then
>>>     
PB> Hola José..
PB> cambié finally por except y ahora "aparentemente" está funcionando
PB> bien.. o sea, si hay error, no ejecuta ninguna sentencia sql.
PB> De todas maneras, seguiré provocando errores en otros lados a ver que
PB> pasa...
PB> muchas gracias a todos..
PB> chauuuuuuuuuuuu

No se como haceis el tema este, pero lo lógico sería:

[...]
try
  SQL.Execute; //Lo que sea, insert, sp, delete...
except
  SQL.RollBack;
  Exit;
end;
try
  SQL.Execute;
except
  SQL.RollBack;
  Exit;
end;
SQL.Commit;
[...]

Si todo está en una función, reemplazar los:

SQL.RollBack por false.
SQL.Commit por true.

-- 
Best regards,
 José





More information about the Lazarus-es mailing list