Ver Mensaje Individual
  #10  
Antiguo 04-10-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Reputación: 29
Lepe Va por buen camino
El problema es que se trata de un EDatabaseError, y es controlado por el propio DBedit. Los EdatabaseError no tienen codigo de error, por tanto, se hace más dificil capturarlo.

Como dije antes, con esto:
Código Delphi [-]
procedure TForm1.ApplicationEvents1Exception(Sender: TObject;
  E: Exception);
begin
     if E is DatabaseError then
       ShowMessage('mi mensaje' + E.Message+'   '+EDatabaseError(E).ClassName);
end;
Si se captura parcialmente el error.

El problema en sí, es que un DBEdit hereda de TCustomMaskEdit que trabaja con texto, al intentar convertir el texto a float, es cuando lanza ese error:

Constante de texto usada:SInvalidFloatValue (Unidad DBConst, linea 28)
que se lanza desde: TFloatField.SetAsString (Unidad DB, linea 4905)

La forma más facil de capturar el error es en evento OnSetText del propio campo de la base de datos. (Doble clic a tu tabla, clic al campo en cuestion, inspector de objetos--> eventos -->setText)

Código Delphi [-]
procedure TForm1.Table1BultosSetText(Sender: TField; const Text: String);
begin
TRY
     StrToFloat(Text)
except
    ShowMessage('mi mensaje de fallo' );
end;
end;

Puedes construir una rutina genérica y asignarla a todos los campos de tipo Float que tengas.

Un saludo
Responder Con Cita