【发布时间】:2020-12-30 05:49:39
【问题描述】:
我正在尝试使用旧的 Delphi XE6 应用程序更新旧的 Paradox (BDE) 表。一个特定的表有两个字段;日期字段和 BCD 字段。由于 BCD (FuelSur) 字段引发“数字超出范围”错误,我无法向 (FuelSurch) 表发布新记录。
所以我写了一个快速测试,但仍然是同样的问题。以下是 FuelSurch 表字段规范。
我刚刚在表单中添加了一个按钮,单击时会触发此过程。
procedure TTestForm.BCDTestBtnClick(Sender: TObject);
var
Bcd: TBcd;
begin
POE_Data.FuelSurch.Open;
POE_Data.FuelSurch.Insert;
Bcd:= StrToBcd('2.01');
showMessage('Bcd = ' + BcdToStr(Bcd)); // This works and shows 'Bcd = 2.01'
POE_Data.FuelSurchFuelSur.AsBCD := Bcd; // Line produces "Number is out of range." error
POE_Data.FuelSurch.Post;
POE_Data.FuelSurch.Close;
end;
确认数据库连接与我可以发布到其他表一样好。似乎这种 BCD 字段类型给我带来了问题。
在将字符串分配给 Bcd 变量之前,是否需要对字符串进行不同的格式化?
【问题讨论】:
-
在将近六年前的the same question 中,您接受了一个答案,看来您正在这里的代码中进行调整。也许应用程序不一样,但两者之间仍然发生了变化。另一个答案建议更改
Data.DB.pas文件。你试过吗?我们是否应该将这个问题作为重复问题结束? -
@TomBrunberg - 有点相似,但有点不同,因为您引用的代码使用的是税率和 asFloat。我现在只是试图隔离将字符串放入 Paradox 表中的 BCD 字段。我没有看到对 Data.DB.pas 的引用。我需要在我的使用中包含它吗?
-
再想一想,我认为这是格式问题。你的电脑里有什么小数分隔符?
-
@TomBrunberg - 一段时期
-
好吧,那不是小数点分隔符(你自己的
showmessage()测试已经确认了)。我假设 Paradox 机器(如果是另一台机器)也设置了句点作为小数分隔符,是吗?Data.DB.pas修改是在您之前 6 岁问题的第二个答案中提出的。我没有检查它,因此不认可它。
标签: delphi delphi-xe bcd paradox