我正在将应用程序从Delphi 2010迁移到Delphi XE7,它使用了一些带有BDE的旧Paradox表。我有一些字段形成BCD(#)大小4,在Delphi 2010中管理as.asfloat
示例
TABELLA1.Fieldbyname('FIELDBCD').AsFloat: = TABELLA2.Fieldbyname('Number').AsFloat;
没有任何问题。
在转换后的程序中,任何类型的赋值都会转到错误信号EDBEngineError Number超出范围....即使我只是将DBGrid中的值数字化。
您是否了解过Delphi XE7中BCD字段管理中的BUG,或者他们是否必须以不同的方式进行管理?
由于 米尔科
答案 0 :(得分:0)
这个问题很老,但是这些天我仍然面临着这个问题。我建议确认三个属性。
精度-(必须是有意义的部分和小数部分)。例如,在数据库中,该字段为numeric(8,4),因此此处的正确值为12
size-(仅数字的偶数部分)。在我们的示例中,正确的值为4
DisplayWidth-在这里,我们使用精度+ 1的值作为逗号。