[Lazarus-es] zeos-firebird: ejemplo transacciones
José Antonio Cuello
josea en artextrading.com
Vie Mayo 7 10:19:07 CEST 2010
Hola, yo trabajo siempre las transacciones manualmente. Simplemente
usando la funcion InTransaction de la base de datos o del conection (no
recuerdo ahora donde está) controlas si tienes que hacer el
starttransaction, y con try finally o except controlas los rollbacks.
Sería algo así:
var vTrans: Boolean;
begin
vTrans := database.Intransaction;
try
if (not vTrans) then database.starttransaction;
...
[sentencias de Insert/Update/Delete]
...
if (not vTrans) then database.commit;
finally
if (not vTrans) and database.Intransaction then database.rollback;
end;
end;
De esta manera si al llamar al proceso has iniciado la transaccion en
otro procedimiento usa la transaccion abierta, si no hay transaccion la
abre y la cierra.
Espero sea de ayuda.
El jue, 06-05-2010 a las 13:51 -0300, Paola Bruccoleri escribió:
> Hola..
> alguien tiene algún ejemplo (usando zeos/firebird2) donde graba varios
> registros en varias tablas (usando o no sp) y que queden en la misma
> transacción?? quisiera ver cómo lo están resolviendo.
>
> esto es lo que yo hago:
>
> DBMain.fdb.AutoCommit:= false;
>
> try
> DBMain.qry.Close;
> DBMain.qry.SQL.Text:= 'update numeros set boletas =
> '+IntToStr(nComprob+1);
> DBMain.qry.ExecSQL;
> except
> MessageDlg('Error', 'Hay error ', mtWarning, [mbOk], 0);
> DBMain.fdb.Rollback;
> end;
>
> ..... varias sentencias: inserts, updates.... todas entre try/except
>
> DBMain.fdb.Commit;
> DBMain.fdb.AutoCommit:= true;
>
>
> Si uso un generador para incrementar el contador de comprobantes, se
> supone que si todo el proceso de grabar está dentro de la misma
> transacción, puedo seguir consultando por el valor del generador, que no
> se me va a modificar, no?
>
> chauuuuuuuuuu
>
>
>
>
> _______________________________________________
> Lazarus-es mailing list
> Lazarus-es en lists.lazarus.freepascal.org
> http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es
________________________________________________________________________
ARTEX TRADING S.A.
José Antonio Cuello Principal
More information about the Lazarus-es
mailing list