Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Capturar excepciones desde pl/sql (https://www.clubdelphi.com/foros/showthread.php?t=34613)

mcalmanovici 15-08-2006 17:31:03

Capturar excepciones desde pl/sql
 
Hola gente:
tengo un problema cuando quiero capturar excepciones creadas por mí en un trigger de una tabla de la base de datos.
Desde delphi yo hago lo siguiente pero no me funciona:

procedure TPUDMCambiarParamOperacion.actualizar;
var
num : Integer;
begin
try
begin
if CDSOperaciones.State in dsEditModes then
CDSOperaciones.Post;
if CDSOperaciones.ChangeCount > 0 then
num := CDSOperaciones.ApplyUpdates(0);
end
except
Application.MessageBox('mensaje excepción', 'Mensaje', MB_YESNOCANCEL + MB_ICONINFORMATION);
end;
end;

Yo quiero poder capturar el mensaje de la excepción que me da el trigger y mostrarlo por pantalla. El trigger es un before_update.

Desde ya cualquier respuesta muchas gracias.

Mariano.

cacuna 17-08-2006 01:19:03

No se pueden poner excepciones en TRIGGER
 
Si no mal recuerdo, en ORACLE no puedes manejar excepciones dentro de los TRIGERS....a menos que me equivoque..hace tiempo que no programo en ORACLE....mas bien tengo mala memoria.

Saludos,

cacuna.

mcalmanovici 17-08-2006 16:06:31

Solución...
 
Hola: les cuento por si les interesa la solución que encontré... También aclaro que lo estoy probando con una base de datos firebird...

El clientDataSet tiene un evento que es onReconcileError, en dicho evento se captura la excepción y se muestra por pantalla de la siguiente forma (es solo una forma, también vi después que se puede capturar en dataSetProvider la excepción que viene de la base de datos):

procedure TPUDMCambiarParamOperacion.CDSOperacionesReconcileError(
DataSet: TCustomClientDataSet; E: EReconcileError;
UpdateKind: TUpdateKind; var Action: TReconcileAction);
var
s:string;
begin
s:=e.Message;
ShowMessage(s);
end;

Obviamente si existe un error (por lo que va a dar la excepción en este caso) ejecuta este evento.....

Saludos.
Mariano.


La franja horaria es GMT +2. Ahora son las 22:32:02.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi