用dbgrid 和 QRDBText 操作 Paradox 表的 数据型字段有时出错.(50分)

  • 主题发起人 主题发起人 山猫
  • 开始时间 开始时间

山猫

Unregistered / Unconfirmed
GUEST, unregistred user!

字段中小数点后应是 2 位, 可有的记录是 10几位

如是 0.12 可能是 0.11999999999999999999999999999

2.4 是 2.399999999999999999999999999 等 .
 
用的是什么字段属性
 
看看BDE的设置吧
 
字符,数据全试过,都不可以.

只用TABLE,dbgrid,等,没有在bde 中设置, 直接在 table 的tablename中指出相对路径.

建了索引, 但不是出错的字段为主键.
 
哇,什么意思?按常规不会有问题呀!
 
这并不影响操作,只需要在显示时把他格式化为两位小数
 
在向数据表中数值型字段写入数值时,如果不加控制,可能会出现这种情况。
建议您用FormatFloat函数来控制数值型字段的输入输出。
function FormatFloat(const Format: string; Value: Extended): string;
 
我的处理方法是在select的时候向转换为string型的,就不会有类似问题了
在oracle下是to_str(),paradox我就不知道是什么了
sorry
 
我知道!在bde administrator中把数据库别名中选项ENABLE BCD设为true.以下是解释:
Specifies whether BDE translates numeric and decimal fields into floating
point values or binary coded decimal (BCD) values. BCD values eliminate the
rounding errors associated with floating point math
(such as a 3 * (2/3) resulting in 2.00000000001). When ENABLE BCD
is set to TRUE, DECIMAL and NUMERIC fields are converted to BCD.
应该可以解决你的问题!
 
to :yangkee
不会吧,老大, 我没有过 BDE , 只用的那几个控件. 所以也没有在 BDE 中建东西.

to :thtfsyh
直接对 paradox 的表操作这样不可以吧?

to : wangy_168
这样很麻烦, 也慢一点吧,老大?
 
那你在bde administrator中建一个数据库别名试一试,应该是ENABLE BCD的问题.
 
to yangkee:

好吧, 我去试试!
 
试过了, 不可以.
 
多人接受答案了。
 
后退
顶部