![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
#1
|
|||
|
|||
|
Lanzar excepciones
Un saludo a todos en el foro. Y desde ya, gracias por la ayuda.
Tengo un problema y escribo para ver si me pueden ayudar, quizá sea algo muy simple pero la verdad no le puedo llegar. El caso es el siguiente: tengo un procedimiento principal, el cual comienza con un try y finaliza con un except, en medio del try se hace llamado a otro procedimiento que lo que hace son algunas transacciones en la base de datos, y dentro de ese segundo procedimiento puede que se llame o no a otro procedimiento que también lo que hace son transacciones a la base de datos, y así sucesivamente hasta llegar a 5 niveles de procedimientos. El problema que tengo es que si en alguno de esos procedimientos se da un error de acceso a la base de datos o se presenta alguna inconsistencia debo de hacer Rollback a las demás transacciones que se realizaron en los procedimientos anteriores. No se si yo puedo lanzar una excepción de un procedimiento a otro hasta llegar al except principal donde se hace el rollback de todas las transacciones, por eso les escribo para que me orienten o me den un luz. Ya que a como está el código en este momento no me cae al except principal, nada mas me da un error de base de datos y el programa se me cuelga. A continuación adjunto el código para que se den una idea de que es lo que necesito hacer. Código:
try
begin
datos.celular.StartTransaction;
Aumentar_Orden(txt_orden.text,form_acceso.usuario.cedula,
form_acceso.usuario.nivel,
Max_Ordenes,Max_Lote,Max_Grupo);
datos.celular.Commit;
end;
except
datos.celular.Rollback;
messagedlg('Error en la asignación del documento, vuelva a intentarlo',mtinformation,[mbok],0);
end;
Otro punto importante es que en los demás procedimientos no existe un try y except. Solo está en el procedimeinto principal. Un saludo a todos y muchísimas gracias por leer mi mensaje, espero haberme explicado bien. |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
|