本人用BDE中的query控件,根据我的sql语句检索数据库, 已经得到数据但我想知道我得到了多少条记录,我从它的recordset属性为什么每次取得的都是-1,请问如何得到检索到的记录数?

解决方案 »

  1.   

    query.RecordCount属性返回的就是
      

  2.   

    最好使用 select count(*) from xxx 来得到记录数,尤其是对于返回的行数较多的时候,他的效率更高。
    否则用RecordCount 可能不准确。
      

  3.   

    对用Query.RecordCount如果返回-1,则你先First再读取RecordCount这样就可以返回真正的行数了
      

  4.   

    对用Query.RecordCount如果返回-1,则你先First再读取RecordCount这样就可以返回真正的行数了
      

  5.   

    Last;
    First;
    n:=recordcount;
      

  6.   

    推荐用:
    select count(*) Num from xxx 尤其对数据量很大,网络环境中效率比RecordCount要高出很多很多!
      

  7.   

    推荐使用select count(*) as num from xxx
      

  8.   

    select count(*) from xxx where ....................
      

  9.   

    其实我觉得如果已经在客户端得到了数据集还是在客户端判断的好,
    因为
    select count(*) from xxx where ....................
    1.多了一次服务器交互
    2.有可能表的记录在两次交户之间发生了变化,从而得出错误数据。
    3.客户机判断速度虽然比服务器的慢,并不会比一次网络交互慢。如果没有得到数据集,建议用count(*),100万的记录也不用1秒。
    不过如果你想得到整个表(而不是查询)的记录数又不需要太精确,你可以在系统表
    中直接得到recountcount字段,---但速度来说,这是最快的!
      

  10.   

    Last;
    n:=RecNo;
    --------------------------
    Query.RecordCount--------------------------
    select count(*) from xxx where ………………
      

  11.   

    本人一直用的select count(*) from xxx ,挺好的
      

  12.   

    TQuery的以下两个属性:
    RecordCount-->如果是返回数据集的查询,用这个得到返回的记录数。
    RowsAffected-->如果是不返回数据集的查询语句,如Insert,Delete等,用这个得到所影响的记录数。