Tengo el siguiente código:
Código Delphi
[-]procedure TfActualizarRubros.btOkClick(Sender: TObject);
Var
Cur : TCursor;
Begin
Cur := Screen.Cursor;
Screen.Cursor := crHourglass;
inherited;
Try
u.Transaction.StartTransaction;
dbMontos.DisableControls;
Case modo of
1 : IncluirRubro;
2 : ModificarRubro;
3 : BorrarRubro;
End;
u.Transaction.Commit;
dbMontos.EnableControls;
Except
On e:Exception do
Begin
u.Transaction.Rollback;
ModalResult := mrNone;
Exception.Create('Error al '+Caption+#13+
'Mensaje del servidor: '#13+e.Message);
End
End;
Screen.Cursor := Cur;
end;
Es la estructura básica que he usado desde hace tiempo para actualizar las tablas firebird. Inicio una transacción, ejecuto las sentencias SQL correspondientes y termino con un commit. Si salta una excepción ejecuto el RollBack y muestro el mensaje correspondiente.
Al probar (forzando un error) no se muestra el mensaje (exception.create...), a pesar de que por debug puedo ver que si se ejecutan las instrucciones dentro del
except y se muestra la excepción del IDE de Delphi. Si lo muestro como un MessageBox si aparece el mensaje.
Esto con Delphi 7.