Ver Mensaje Individual
  #2  
Antiguo 06-06-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola manuFP y bienvenido a los foros del Club Delphi.

Tenés que utilizar el objeto EDBEngineError para poder extraer el código de error y actuar en consecuencia.
Un ejemplo:
Código Delphi [-]
  Query1.SQL.Text:= 'SELECT a* FROM COUNTRY';
  try
   Query1.Open;
  except
    on E: Exception do
     if E is EDBEngineError then  // Error de base de datos
     begin
       case EDBEngineError(E).Errors[0].ErrorCode of
         $2A12:begin// Invalid use of keyword
                 ShowMessage('Error en sentencia SQL'); //<- Error que arroja la sentencia de arriba
                 ...
               end;
          //...
         else ShowMessage(EDBEngineError(E).Errors[0].Message);
       end;
     end
     else ShowMessage(E.Message);
  end;
El tema es extenso para tratarlo en un mensaje con un simple ejemplo y los problemas que acarrea no capturar un error son serios. Te recomiendo
que amplies buscando sobre el tratamiento de errorres, objeto EDBEngineError, BDE Error codes, etc.
Y si quisieras ir un paso más allá y personalizar tus excepciones, Delphi te permite redefinir el manejador de las mismas mediante el evento Application.OnException.

Sin ir más lejos en el FTP del Club tenés La Cara Oculta de Delphi 4 que dedica un capítulo a tratar el tema excepciones.


Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 06-06-2011 a las 00:32:26.
Responder Con Cita