Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Capturar errores de sql (https://www.clubdelphi.com/foros/showthread.php?t=29379)

piccolo2101 20-01-2006 10:37:21

Capturar errores de sql
 
Hola,

pido disculpas si este hilo ya fue creado pero no he sido capaz de encontrarlo así que ahí va mi pregunta: ¿Como puedo capturar los tipos de errores que produce un AdoQuery en una sentencia de INSERT para poder tomar decisiones en consecuencia?

Un saludo y gracias.

dec 20-01-2006 11:06:39

Hola,

No es que tenga mucha experiencia con lo que comentas, pero, supongo que lo que tienes que hacer es tratar de capturar excepciones, y no errores, porque ten en cuenta que puedes ejecutar aquellas expresiones, instrucciones, sentencias, en fin, susceptibles de tener problemas, dentro de un bloque "try .. except", de forma que sería justamente en el apartado "except" donde tendrías que codificar aquello que quisieras llevar a cabo en caso de que se produjese una excepción.

Tendrás que fijarte qué tipo de excepciones pueden producirse, pero, también podrías capturar "cualquier" excepción que se produjera, de tal forma que pudieras llevar a cabo la tarea que fuera menester en ese caso. ¿Me he explicado bien o como el culo? ;)

Neftali [Germán.Estévez] 20-01-2006 11:10:27

Cuando salte una excepción en ADO, verás que el mensaje que aparece te dice (normalmente) que es una excepción de la Clase EOLEException.
Una vez que sabes ésto puedes programar lo siguiente:

Código Delphi [-]

// Proteccion
try  
  ... 
  ...Post;
  ...
except
  on E:EOleException do begin
    // error
    MessageDlg(Format('Error: %s    Codigo: %d', [E.Message, E.ErrorCode]), mtError, [mbOK], 0);
  end
  else begin
    ...tratamiento de otros errores
  end;
end;


Una vez que tengas esto y se produzca un error te saldrá el mensaje y el código; Si quieres afinar más, dentro el tratamiento de excepciones puedes hacer algo similar a ésto (a partir del código de error que te de):

Código Delphi [-]
except
  // NOTA: los códigos me los he inventado...
  on E:EOleException do begin
    // error
    if (E.ErrorCode = 111) then begin
      ...Error de clave primaria
    end
    else if  (E.ErrorCode = 222) then begin
      ...Error en la sentancia SQL
    end
    else if (....) then begin

    end;
  end
  else begin
    ...tratamiento de otros errores
  end;
end;


En este hilo de los foros puedes encontrar la lista de errores de ADO.

piccolo2101 20-01-2006 11:21:04

Muchas gracias a ambos voy a investigar porque habiá intentado lo de try...except pero la excepción E era nil.


La franja horaria es GMT +2. Ahora son las 08:35:25.

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