pues eso es básicamente lo que tendrías que hacer. Solamente la variable "Level" es opcional en caso de vayas a manejar varias transacciones anidadas y quieres llevar el control de cada trasancacción, si no quieres llevar el control específico por cada transacción, pues no sería necesaria esa variable.
Como "cuestión de estilos" a mi no me gusta usar la excepción general "E:Exception", prefiero usar la clase específica para darle un manejo específico a cada tipo de error.
Y Finalmente, en el bloque de código que pones, en caso de ocurrir un error, se hace el "rollback", pero no se muestra ningún mensaje por lo que el usuario nunca se enteraría del error.
tendría que ser algo como:
Código Delphi
[-]
....
except
on E:Exception do begin
Conexion.RollbackTrans;
showmessage(E.ClassName + ' - ' +E.Message);
end;
end
Importante: el mensaje debe de ir siempre después del "rollback", si lo pones antes, el "rollback" se ejecutará hasta después de que le den "aceptar" y está científicamente comprobado que si el usuario se está tomando un café (o apenas fue a hacerlo) se va a tardar mucho en darle aceptar y la base de datos se queda bloqueada por que la transacción no termina.