Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Agrupar varias funciones o procedimientos en una transacion (https://www.clubdelphi.com/foros/showthread.php?t=94191)

webmasterplc 25-09-2019 17:08:46

Agrupar varias funciones o procedimientos en una transacion
 
Hola, estoy haciendo un sistema para la tesis, hay eventos que llamo 3 funciones a la vez y quiero cuidar que cuando ourra un error en una no se reverse las otras si se han ejecutado ejemplo
Código Delphi [-]
precidimiento1(parametro1,parametro2,parametro3); //este guarda en una tabla 
procedimiento2(parametro1,parametro4, parametro6); //este guarda en otra

gatosoft 25-09-2019 18:06:41

No se si entiendo bien, pero si lo que quieres es trabajar transacciones desde Delphi, normalmente lo haces utilizando las opciones que te dan los componentes que estes utilizando.

en general, dependiendo d elos componenets que utilices, puedes poner tu sesion en modo transacción, con algo como

Código Delphi [-]
DatabaseComponent.StarTransacion;
Try
 //haces las operaciones que necesites con los componenets Query y/o StoreProcedure
 Procedimeinto1(...);
 Procedimeinto2(...);
 Procedimeinto3(...);
 DatabaseComponent.Commit; //todo salió bien
Except
  DatabaseComponent.Rollback; //ocurrió un error reversa todo
end;

Pero, en general los componentes de BD están en modo Autocommit, asi que cada transacción que hagas, queda aplicada y si otras fallan estas no se van a reversar.


Podrias tambien hacer commits por grupos

Código Delphi [-]
DatabaseComponent.StarTransacion;
Try
 //haces las operaciones que necesites con los componenets Query y/o StoreProcedure
 Procedimeinto1(...);
 Procedimeinto2(...);
 DatabaseComponent.Commit; //todo salió bien
Except
  DatabaseComponent.Rollback; //ocurrió un error reversa procedimientos 1 y 2
end; 

DatabaseComponent.StarTransacion;
Try
 //haces las operaciones que necesites con los componenets Query y/o StoreProcedure
 Procedimeinto3(...);
 DatabaseComponent.Commit; //todo salió bien
Except
  DatabaseComponent.Rollback; //ocurrió un error reversa procedimeinto 3
end;

webmasterplc 25-09-2019 18:24:34

gracias voy a probar


La franja horaria es GMT +2. Ahora son las 15:32:50.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi