秋·风

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
近日有网友说lazarus 自带的DB使用Filtered后RecordCount返回的记录数是全部记录数,经实测确实存在这个问题,看官网的论坛也有人反馈这个问题,不过官方一直没处理。
可以使用Helper来解决这个问题:
TDatasetHelper = class helper for TDataset
public
    function GetRecordCount:Longint;
end;


function TDatasetHelper.GetRecordCount:Longint;
var
  prevRecNo: Longint;
begin
  if self.Active then
  begin
     DisableControls;
     prevRecNo := RecNo;
     Result := 0;
     First;
     while not(EOF) do
     begin
       Inc(Result);
       Next;
     end;
     RecNo := prevRecNo;
     EnableControls;
  end;
end;

 

posted on 2023-08-18 10:03  秋·风  阅读(149)  评论(0编辑  收藏  举报