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