救命呀,这是不是Borland的一条bug呀! (100分)

J

jidus

Unregistered / Unconfirmed
GUEST, unregistred user!
小弟用Table连上DateSourse,再连上DBGrid,数据库用的是SQL7.0,数据库驱动用的是
Borland公司的引擎,在BDE5.01建立连接。可是一运行,当在DBGrid中的数值字段输入
55.3时,却活生生地变成了55.29。还有其它一些数值也是无缘无故地少0.01,
当小数位变为3位时,又少0.001。可当输入55.301时却变成55.3。而输入55.31时却平安
无事。小弟于是改用微软的数据引擎,直接在ODBC建立连接,倒是没有这样的事,可是
这样一来许多Borland引擎支持的功能又没用不上了,另外编程的一些程序也频频出错。
小弟编程也有一段时间了,可这样的事却是第一次领略,百思不得其解,
不知道是否是Borland公司的一条BUG。望各位大虾指点迷津。

 
这的确是BDE的一个BUG,据我所知,好象没有办法,我是这么办的,在输入55.3时输入55.301,
 
Bde对Sql6.5以上版本支持不是太好,还是改用Ado
 
用ADO吧,我就用这个连接SQL 7.0。成生的程序还可以是绿色程序。
 
建议使用ADO
 
我也碰到过这样的问题
方法是建表时多设几位小数,以增加精确度
比如,5.30可为5.299999,不影响结果
 
建议使用ADO
 
问题是大家所说的我都知道,只是想确认一下是否别人的观点和我一样,认为它是一只BUG。
但我更想知道是有什么可以在基本上不太改变原本程序的基础上,对原程序进行修改。因为
我的程序已基本开发完成,转成ADO不太实际,多设小数点不能满意,输成55.301,这我知道,
可是有的数字却是用查询语句生成了,而且我不允许用户修改,这就麻烦。而且,一旦这样
的数字一多,求和起来又会少更多,就算是我有语句硬是加上0.01也不行,55.9也是这样。
这些都是让人无法接受的。而且我发现就算是用6.0的版本也不行,它的DBE根本就没升级,
无论是DELPHI,还是C++BUILD,真让人伤心。而且市面上许多书都是介绍Table偏多于ADO,
虽然ADO的用法我已掌握。但将来写成B/C,又将如何?真是成也BORLAND,败也BORLAND。
 
其实我也知道这是自己学艺不精造成的,不过还得感谢深度论坛网友的提醒,他告诉我应
将BDE中将enable BCD设为true。其实在前几天我也发现这个选项,不过由于设置后,在查
询语句产生的结果中出现了类型不匹配错误的情况,所以我一时愣住了,没敢用。他这一
提醒我重新又试了一下确实可以解决以上问题。而且无论是用ADO还是用ODBC引挚,我发现enable
BCD都是默认值。所以应该认为这个问题无论如何也是回避不了的。所以我想各位网友共同研究一
下如何在用该选项以后,解决查询出错的问题,这其实也是困扰大家的一个问题。如果解决
了它我想大家的日子都会更好过。
 
SQL SERVER7中字段定义为NUMERIC型,
在DBGRID输入时,在FIELD的ONSETTEXT事件中对输入的数值进行小数位截取
 
还是ADO好
 
ADO is very good
 
通过设置该选项,并重新定义永久字段,我发现以上问题已完满解决,谢谢大家的帮助
和支持,谢谢。
 
顶部