0

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

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

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

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

“a”不是字段“s01_amt”的有效浮点值。

4

3 回答 3

1

该错误消息仅由 type 的字段创建TFloatField,该字段仅在TFieldDefDataType值为时创建ftFloat。仔细检查您是否更改了您认为您所做的属性。

字段定义可以从字段本身填充。确保您已更改底层数据库架构,而不仅仅是您的TTable组件。

于 2010-08-24T14:18:41.980 回答
0

我只是将它转换为浮点数:

var
dFloat : double;

begin
  try dFloat := strToFloat(edit1.txt); except dFloat := 0; end;

  edit;
  FieldByName('s01_amt').AsFloat := dFloat;
  post;

end;
于 2010-08-24T13:33:56.553 回答
0

当您更改字段类型时,您是否也更改了架构中的数据库字段(xBASE/Clipper 中的结构)?如果不是,您正在尝试将非数字值分配给数字类型字段,这就是导致异常的原因。

如果您仍在使用 DBF 样式文件,则需要将数据库中字段的类型从 NUMERIC 更改为 CHARACTER。您可以使用来自数据库桌面 IIRC 的 SQL 以及 BDE 的 DBASE 支持来执行此操作。

仅将 TField 的类型从 ftFloat 更改为 ftString 不会自动更改该字段的数据库存储;你必须自己在这两个地方做。

于 2010-08-24T14:18:01.247 回答