Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Como puedo recoger los errores de Oracle (https://www.clubdelphi.com/foros/showthread.php?t=40166)

albertillo 08-02-2007 17:23:36

Como puedo recoger los errores de Oracle
 
Hola gente, tengo un problema.
No puedo recoger bien los errores que proporciona oracle xq delphi lo interpreta siempre con el mismo codigo de error.

yo dispongo de una funcion que dependiendo del codigo de error que me proporcione e.errors[e.errorcount-1].errorcode muestro un mensaje u otro pero el problema es que siempre tengo el mismo codigo de error aunq sea el error de oracle distinto.
Ahi os muestro la funcion q utilizo para mostrar los errores, que es llamada en el try de abajo

albertillo 08-02-2007 17:26:20

Desde aki llamo al procedimiento que me muestra los mensajes

Código Delphi [-]

try
                //Indicamos el codigo q puede dar error

                t.post;

                except

                //Indicamos los posibles casos de errores

                on e:edbengineerror  do begin
                        t.cancel;
                        mostrarmensajes(inttostr(e.errors[e.errorcount-1].errorcode));
                        //e.errors[] es la pila dnd se almacenan los errores
                        //e.errorcount nos dice el numero de errores almacenados en la pila
                        //e.errors[e.errorcount-1].errorcode nos dice el codigo del último error
                end;

                on e:edatabaseerror  do begin
                        t.cancel;
                        showmessage(e.message);
                        end;
                end;

albertillo 08-02-2007 17:27:58

Esta es la unidad que contiene el procedimiento que muestra los mensajes.
El problema es q siempre recojo el mismo codigo de error.

Código Delphi [-]

unit UErrores;

interface

uses
Dialogs;

//declaramos el prototipo de la funcion

procedure mostrarmensajes(cod: string);

implementation

procedure mostrarmensajes(cod: string);
        begin
        if cod='9729' then
                Showmessage('Violación de clave')
        else
                if cod='9733' then
                Showmessage('No puede asociar un registro que no existe')

                else
                        if cod='9734' then
                        Showmessage('No puede borrar el registro. Tiene registros asociados')

                        else
                                if cod='10241' then
                                Showmessage('No se puede abrir la tabla, está abierta por otro usuario')

                                else

                                Showmessage('Error desconocido');
                                






        end;



end.


La franja horaria es GMT +2. Ahora son las 14:23:10.

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