Delphi - Como usar RollBack con Before y AfterPost

 
Vista:

Como usar RollBack con Before y AfterPost

Publicado por Leo (6 intervenciones) el 22/08/2008 23:06:45
Hola amigos del foro.
Estoy trabajando con MS SQL 2000 y Delphi 7. Me conecto mediande ADO y utilizo la base de datos de forma transaccional.
Los ejemplos que he encontrado en Delphi, no utilizan los eventos BeforePost y AfterPost conjuntamente.

¿Cómo se utilizan los métodos BeginTrans y RollBacktrans con los eventos BeforePost y AfterPost?

Desde ya les agradezco por su ayuda.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Como usar RollBack con Before y AfterPost

Publicado por pacopaz (104 intervenciones) el 25/08/2008 21:42:11
Lo que diré es en base a mi experiencia y no significa que sea la única verdad.
Normalmente, cuando mando grabar algún registro lo que hago es lo siguiente:

try
try
BeginTrans;
...
//[llenado de campos]
...
CommitTrans;
except
on E:Exception do RollbackTrans;
//[muestro en pantalla el error]
end;
finally
//[limpio los campos]
end;

Todo esto lo puedo hacer en un botón que mande guardar o alguna acción dentro de un ActionList, etc.

Luego, en el evento de BeforePost, cuando aplica, lo que hago pueden ser varias cosas, como asegurarme de que la conexión se encuentre en verdad activa o checar que el registro que estoy modificando no haya sido modificado previamente y que esté guardando datos erroneos, como por ejemplo cuando estás modificando los detalles de un empleado y quieres modificar su sueldo diario, pero alguien más acaba de modificar su apoyo para transporte, por ejemplo. Si mandas guardar los datos completos (quizás por que así lo requiere un procedure en la bd), borrarías el cambio que alguien más acaba de hacer y es para lo que te sirve el BeforePost, entre otras cosas.
Sinceramente utilizo poco y nada el AfterPost, por que lo que tengo que hacer con el registro luego de ingresarlo normalmente depende de un trigger y no del programa. Si acaso lo ocupara sería para tomar resultados si tengo registros dependientes del primer registros que intento guardar, por ejemplo, cuando quiero ingresar una factura: si no se ingresó el encabezado, no tengo por que tratar de ingresar el detalle de la misma.

Espero que te sirva.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar