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

解决方案 »

  1.   

    Showmessage(IntToStr(Query1.RecordCount));
    看看有多少行?应该不会有这个问题吧,没遇到过,一直用 Ado
      

  2.   

    用SQL语句查看有多少行,和Query1.RecordCount比较一下。
      

  3.   

    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的确没问题)
      

  4.   

    这样试试,
    Query1.First;
    Query1.Last;
    再试试
      

  5.   

    Query1.Open;
    Query1.FetchAll;
    ShowMessage(IntToStr(Query1.RecordCount));
      

  6.   


    谢谢keiy。但问题是现在查出来的数据都少了,就算我得到了正确的记录数也没用,实际得到的条数还是不够。这样绑定到TcxGrid中的记录数还是少,最后的合计还是不对。
    难道BDE的取出来的记录数都会变吗?   
    一定要用ADO才能解决?
      

  7.   

    应该是的,因为BDE的Recount在多年前我就遇到过,看了在线帮助才知道。不过,我到现在很多应用还是用BDE,因为我不再使用RecordCount,如果需要,会用select count(*)重查一遍,且我用EhLib,它的Grid统计是没有问题的(cxGrid没用过)
      

  8.   

    如果BDE有这个BUG,建议还是使用ADO,ADO打包也简单,不用带一大堆DLL
      

  9.   

    ado的bug更多,感觉ms的数据库驱动只对access/sqlserver比较好,对oracle,db2这些也问题多多。
    用ado返回oracle的recordcount也经常是0或天文数字,哎,什么时候才有专业的数据库驱动开发商哦
      

  10.   

    sql :
    select count(*) from tb
    delphi:
    ShowMessage(IntToStr(qry_BaseTemp.RecordCount));
    兩者比較一下就知道了,本人一直用cxgrid,沒有任何bug...