读书人

Delphi中Tquery查询SQLSERVER返回的re

发布时间: 2012-02-09 18:22:27 作者: rapoo

Delphi中Tquery查询SQLSERVER返回的recordcount有误
为什么用事件探查器跟出来的脚本,直接在查询分析器执行得出来结果是10W多行。。
但是系统中绑定到CxGrid中就只有9W多行了,应该是TQuery只有9W多行了。。。 太假了。




[解决办法]
Showmessage(IntToStr(Query1.RecordCount));
看看有多少行?应该不会有这个问题吧,没遇到过,一直用 Ado
[解决办法]
用SQL语句查看有多少行,和Query1.RecordCount比较一下。
[解决办法]
BDE的Recount的确是不对的,它的HELP就提到:
Note:Use RecordCount with care, because record counting can be a costly operation, especially for SQL queries that return large result sets. Generally, an application should only use RecordCount with Paradox and dBASE tables.
一般BDE的Recount只对桌面数据库有用,如果你要记录数,要么先用
select count(*) 先查一遍(N年前没其它引擎时用)
要么改成其它数据引擎(如ADO的确没问题)
[解决办法]
这样试试,
Query1.First;
Query1.Last;
再试试
[解决办法]
Query1.Open;
Query1.FetchAll;
ShowMessage(IntToStr(Query1.RecordCount));
[解决办法]
Use ADO...
[解决办法]
应该是的,因为BDE的Recount在多年前我就遇到过,看了在线帮助才知道。不过,我到现在很多应用还是用BDE,因为我不再使用RecordCount,如果需要,会用select count(*)重查一遍,且我用EhLib,它的Grid统计是没有问题的(cxGrid没用过)
[解决办法]
如果BDE有这个BUG,建议还是使用ADO,ADO打包也简单,不用带一大堆DLL
[解决办法]
ado的bug更多,感觉ms的数据库驱动只对access/sqlserver比较好,对oracle,db2这些也问题多多。
用ado返回oracle的recordcount也经常是0或天文数字,哎,什么时候才有专业的数据库驱动开发商哦
[解决办法]
顶LS的

你的回复太长啦
[解决办法]
sql :
select count(*) from tb
delphi:
ShowMessage(IntToStr(qry_BaseTemp.RecordCount));
者比一下就知道了,本人一直用cxgrid,有任何bug...

读书人网 >.NET

热点推荐