从一个含有几个字段的表中选择出特定的记录显示在dbgrid中,在按不同选项时,用同一个dbgrid显示不同的记录.但是不知道为什么有一个选项打开程序时首先去点总是显示记录数为1,但显示出来的记录正常.而打开时先去点其他的就没有问题,好象是table.recordcount不知为什么在这时总为1,代码和其他项除了条件等不同其他均一样,不知道是什么问题?请各位高手帮忙分析一下原因.

解决方案 »

  1.   

    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.
      

  2.   

    “但是不知道为什么有一个选项打开程序时首先去点总是显示记录数为1”你这句话中的“去点”是什么意思?是Click事件中的吗?Table还不至于有这么大的Bug以致于总是显示记录数为1,可能是你的“去点”事件在统计的时候出错了吧,请楼主仔细查一查
      

  3.   

    “但是不知道为什么有一个选项打开程序时首先去点总是显示记录数为1”中“去点”是什么意思呢?是Click事件吗?我觉得不会是Table的问题,而是楼主可能在“去点”事件中显示的时候没有更新所应显示的值吧,请楼主仔细查一查!
      

  4.   

    本人也碰到过同样问题,但只在MIDAS开发中出现,如ClientDataSet的每次取的记录条数不为全部时,才出现这种现象,即使如此:也可用Last过程调用,移到表尾,这时RecordCount就是总记录条数。(这种方法将把所有记录传送到客户端,最好是不服务端打开时就记下recorccount值,由客户端编一函数去取)
      

  5.   

    注意 即使不用DataSnap而直接用bde的TTable,TQuery也不可依賴RecordCount
    因為如果DBMS連線不返回(xxx rows affected)或相似的句子的話(也就是說這東西關了)
    RecordCount always be -1.
    自己搞個函數吧
    with Query1 do begin
      Sql.text:='select count(*) form Table1';
      Open;
      result:=Field[0].asInteger;
      Close;
    end;