Delphi XE7-字段FTBcd-编号超出范围
我正在将一个应用程序从Delphi 2010迁移到Delphi XE7,它使用一些旧的Paradox表和BDE。我有一些字段是BCD(#)大小为4的,在Delphi 2010中作为.asfloat管理 范例Delphi XE7-字段FTBcd-编号超出范围,delphi,delphi-xe7,tbcd,Delphi,Delphi Xe7,Tbcd,我正在将一个应用程序从Delphi 2010迁移到Delphi XE7,它使用一些旧的Paradox表和BDE。我有一些字段是BCD(#)大小为4的,在Delphi 2010中作为.asfloat管理 范例 TABELLA1.Fieldbyname('FIELDBCD').AsFloat: = TABELLA2.Fieldbyname('Number').AsFloat; 没有任何问题 在转换后的程序中,任何类型的分配都会发送错误信号EDBENGINE错误号超出范围。。。。即使我只是从DBG
TABELLA1.Fieldbyname('FIELDBCD').AsFloat: = TABELLA2.Fieldbyname('Number').AsFloat;
没有任何问题
在转换后的程序中,任何类型的分配都会发送错误信号EDBENGINE错误号超出范围。。。。即使我只是从DBGrid中对值进行数字运算,也会出现这种情况
您知道Delphi XE7中的BCD字段管理中存在错误吗?或者他们必须以不同的方式进行管理吗
谢谢
米尔科这个问题由来已久,但这些天我仍然面临着这个问题。我建议确认三个属性 精度-(它需要是有意义的部分和分馏部分)。例如,在数据库中,字段是数字(8,4),因此这里的正确值是12 大小-(只是数字中的要素部分)。在我们的示例中,正确的值是4
DisplayWidth-这里我们使用精度+1的值作为逗号。使用
TField.AsBCD
来代替。我说“即使我只是从DBGrid中对值进行数字运算,这也是正确的”。该问题与作业类型无关。任何类型的赋值都会出错。我有两台PC和delphi xe7,两台都是同一个问题。我使用过任何类型的作业(也是.asbcd),但没有结果。你说得对。这是因为基础值的类型,这就是为什么您应该使用TField.AsBCD
而不是我所说的。请发布一个MCVE,其中包含足够的信息,以便我们重现问题,包括Paradox表定义和实际的可编译代码。连接它们。将TTable连接到具有BDE别名的Paradox表。Paradox表有一个BCD字段就足够了。通过DBGrid修改表的BCD字段,在Post上错误为“EDBEngineError Number超出范围”