Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Mensajes de error de la BD en Español (https://www.clubdelphi.com/foros/showthread.php?t=44666)

Alcolea 12-06-2007 06:11:55

Mensajes de error de la BD en Español
 
Hola a todos, quiero "capturar" los posibles mensajes de error de una BD y traducirlos al Español. Hasta ahora me resulta solo cuando el error tiene este mensaje 'Key violation.'. El código que uso en el evento PostError del componente Table1 es este...

Código Delphi [-]
 procedure TForm1.Table1PostError(DataSet: TDataSet; E: EDatabaseError;
  var Action: TDataAction);
begin
 
 if E.Message = 'Key violation.' then
 begin
  Application.MessageBox(.........);
  Action := daAbort
 end;
 
end;

... otra alternativa sería ...

Código Delphi [-]
 procedure TForm1.Table1PostError(DataSet: TDataSet; E: EDatabaseError;
  var Action: TDataAction);
begin
 
 if E.Message <> ' ' then
 begin
  Application.MessageBox(.........);
  Action := daAbort
 end;
 
end;

... pero no le daría al usuario la explicación exacta de cada posible error en la entrada de datos.

loxod 13-06-2007 18:32:56

pudiera usar algo como lo siguiente:

Código Delphi [-]
procedure TForm1.AppExcept(Sender : TObject; E : Exception);
begin
// Valida que la BD no marque error de tipos
   if  (Pos('DUPLICATE ENTRY',UpperCase(e.Message)) > 0) then
     begin

     end else
   if Pos('IS NOT A VALID FLOATING POINT',UpperCase(e.Message)) > 0 then
     MessageDlg('El tipo de Datos es Invalido.' + #13 + #10 +
     'Verifiquelo por Favor', mtWarning, [mbOK], 0)
   else
   if Pos('IVA',UpperCase(e.Message)) > 0 then
     MessageDlg('El I.V.A. esta fuera del rango (0-50).' + #13 + #10 +
     'Verifiquelo por Favor', mtWarning, [mbOK], 0)
     else
   if Pos(QuotedStr('ENTREGADO') + ' MUST HAVE A VALUE',UpperCase(e.Message)) > 0 then
     MessageDlg('El campo de Entregado debe tener un Valor' + #13 + #10 +
     'Verifiquelo por Favor', mtWarning, [mbOK], 0)
      else
       begin
           MessageDlg('Ha Ocurrido un Error en el Sistema.' + #13 + #10 +
                      'Intente de Nuevo la Operacion', mtWarning, [mbOK], 0);
       end;
end;

y en el oncreate de la forma

Código Delphi [-]

procedure TForm1.FormCreate(Sender: TObject);
begin
    Application.OnException := AppExcept;
end;


La franja horaria es GMT +2. Ahora son las 06:22:04.

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