Ver Mensaje Individual
  #5  
Antiguo 31-08-2004
Morphine Morphine is offline
Miembro
 
Registrado: ago 2004
Posts: 28
Reputación: 0
Morphine Va por buen camino
Obtener el SQLCode y luego cambiar el mensaje de error

He intentado este codigo y nada:

Código Delphi [-]
procedure TfrmPrincipal.FormCreate(Sender: TObject);
begin
  Application.OnException:= Excepciones;
end;
 
procedure TfrmPrincipal.Excepciones(Sender: TObject; E: Exception);
var msg: String;
begin
  if E.ClassNameIs('EIBInterbaseError') then
    // Capturar Excepciones generada por la base de datos
    if EIBInterbaseError(e).SQLCode = -836 then begin
      msg:= RightStr(e.Message, StrLen(PChar(E.Message)) - Pos(Chr(10), PChar(E.Message)));
      MessageDlg(msg, mtError, [mbOk], 0);
    end
    else if EIBInterbaseError(e).SQLCode = -625 then
      MessageDlg('Datos de entrada no son validos. Verifique si se ingresó todos los datos requeridos', mtError, [mbOk], 0)
    else if EIBInterbaseError(e).SQLCode = -530 then
      MessageDlg('Hay registros relacionados, no se puede realizar la operación', mtError, [mbOk], 0)
    else if EIBInterbaseError(e).SQLCode = -803 then
      MessageDlg('El registro ya existe y no puede repetirse', mtError, [mbOk], 0)
    else
      MessageDlg('Ha ocurrido el siguiente error: ' + #13 + e.Message + #13 + #13 +
        Format('IBErrorCode: %d - SQLErrorCode: %d',
             [EIBInterbaseError(e).IBErrorCode, EIBInterbaseError(e).SQLCode]), mtError, [mbOk], 0)
  else
    ShowMessage(E.Message);
end;

Probablemente es por la version de Delphi que utilizo (4), que no posee los componentes IB (interbase), lo que no he podido es adaptar este codigo a la version que utilizo.

Última edición por __cadetill fecha: 31-08-2004 a las 21:19:04.
Responder Con Cita