我正在使用一个BDE TTable,它有一些最初是ftDouble的字段。 因为要存储的输入有时是非数字的,所以我现在将字段类型更改为ftString。
使用TEdit输入字段。当代码到达:
with tblDM do
begin
Edit;
FieldByName('s01_amt').AsString := Edit1.Text;
Post;
end;
如果条目不是数字,我会收到BDE错误:
'a'不是有效的浮点数 字段's01_amt'的值。
答案 0 :(得分:1)
该错误消息仅由TFloatField
类型的字段创建,该字段仅在TFieldDef
的{{1}}值为DataType
时创建。仔细检查你是否认为你已经改变了财产。
字段定义可以从字段本身填充。确保您已更改了基础数据库架构,而不仅仅是ftFloat
组件。
答案 1 :(得分:0)
我只想把它转换为浮点数:
var
dFloat : double;
begin
try dFloat := strToFloat(edit1.txt); except dFloat := 0; end;
edit;
FieldByName('s01_amt').AsFloat := dFloat;
post;
end;
答案 2 :(得分:0)
当您更改字段类型时,您是否还更改了架构中的数据库字段(xBASE / Clipper中的结构)?如果没有,您试图将非数字值分配给数字类型字段,这就是造成异常的原因。
如果您仍在使用DBF样式文件,则需要将数据库中字段的类型从NUMERIC更改为CHARACTER。您可以使用数据库桌面IIRC中的SQL,使用BDE的DBASE支持。
只需将TField的类型从ftFloat更改为ftString,就不会自动更改该字段的数据库存储空间;你必须自己在两个地方都这样做。