Hola,
Yo añadiría un detallito:
Código Delphi
[-]
try
Zconn.startransaction;
zquery.exec;
zconn.commit;
except
zconn.rollback;
raise; end;
Si no lanzas la excepción, el usuario no se enterará de qué fue lo que pasó, simplemente estarás ocultando el error.
// Saludos