你说的问题我没有遇到过,不如你用这样的循环来计算记录数吧。
while not Query.eof do
begin
  i :=i+1;
  Query.next;
end;

解决方案 »

  1.   

    把DataSet的CursorLocation设为adUseClient,即可解决问题。
      

  2.   

    我使用的是TABLE控件.你说的是在VB中吧
      

  3.   

    在Delphi中也一样,TAdoTable也有Cursorlocation阿。
    除非你用的BDE。如果你用的SQLServer做服务器,还是用ADO吧。
    你可以试试TAdoDataSet控件。
      

  4.   

    Client/Server 和 Desktop Table的結構是很不同的.當同時間有多人進入同一表時, 有些是正在加上, 或更改中, 或在取消中; 同一個record便會有幾種不同的況態了. Delphi的Transaction控件來管理這些, 他便定義了 dirtyRead; CommittedRead; RepeatableRead幾種transaction了.  SQL2000只支援頭2種, 而xBase和Access更只有頭1種呢. SQL 2000會把Transaction中的record上鎖, 直至record committed然後存回數據庫中後, 才解鎖.因此在數據庫運行過程中的真實的recordcount是很難確定. 我想你求的record count是當時己committed的實數. 但由於在transaction中的都是未知的數目, 故在sql server下是很難求的.
      

  5.   

    为什么不试一试用SQL语句   select count(*) as count from table
    然后再读取记录集的count值就行了。
      

  6.   

    我想是你的控件应该升级了!
    不过我以前也遇到过类似的问题,但我仔细查看代码,还是代码有些地方写的不够
    严谨,你可以仔细查看一下你的代码,或是关于空上记录集的记录。
    如果你用的是ADO的相关控件,是该找些关于它的升级的了,我以前用ADO的时候总是出现这样或那样的问题,所以我觉得BDE就好多了。