我的操作系统 win2000
    sql 7.0
    delphi 5.0
===============
查询时 数据显示没有错误
    但 showmessage(inttostr(query1.recordcount));
           等于 -1
    其它一切正常  可是我要数据集的个数?

解决方案 »

  1.   

    把query1查询的SQL语句贴出来看一下
    query1.active :=true;
      

  2.   

    在写完了sql查询语句后,你再加一个query1.open;
      

  3.   

    不过帮助文件中好像不推荐用RecordCount:
    Generally, an application should only use RecordCount with Paradox and dBASE tables.
      

  4.   

    把ADODataset的CursorLocation改为clClient就好了。
      

  5.   

    帮助里的确不推荐使用RecordCount,
    很多人这么用Query1.Open;
    Query1.Last;  // 这一句很重要
    showmessage(inttostr(query1.recordcount));我个人非常不支持这个用法,因为它需要返回全部的结果集,如果这个表10万行,你想大家多大。对于非dbf、paradox这类的数据库,最好使用 select count(*) from xxxx 这个方式,他的效率最高。
      

  6.   

    同意 pazee(耙子)(谁捡了我的钱包)
    使用 select count(*) from xxxx
      

  7.   

    同意 pazee(耙子)(谁捡了我的钱包)
    使用 select count(*) from xxxx//***************
    我也学了一点
      

  8.   

    ADOConnection.CursorLocation = adUseClient
      

  9.   

    ADO组件有这个问题,BDE没碰到过,不行就通过SQL取总数吧。
      

  10.   

    Delphi5下好像的确有这个问题,记得把CursorLocation改为clClient可以解决
    还有,最好是把Delphi5的那些补丁都打上(好像有专门针对ado的两个补丁,好久就没有用Delphi5了,sigh)
      

  11.   

    RecordCount = 0 表示没有记录,非0表示有记录,不知道为什么ADO会这样,和Delphi没有关系