Delphi BDE Double type Field更改为String类型

时间:2010-08-24 13:19:17

标签: delphi bde

我正在使用一个BDE TTable,它有一些最初是ftDouble的字段。 因为要存储的输入有时是非数字的,所以我现在将字段类型更改为ftString。

使用TEdit输入字段。当代码到达:

   with tblDM do
   begin
      Edit;
      FieldByName('s01_amt').AsString := Edit1.Text;
      Post;
   end;

如果条目不是数字,我会收到BDE错误:

  

'a'不是有效的浮点数   字段's01_amt'的值。

3 个答案:

答案 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,就不会自动更改该字段的数据库存储空间;你必须自己在两个地方都这样做。