lazarus 自带的DB使用Filtered后RecordCount返回的记录数是全部记录数

发布时间 2023-08-18 10:05:31作者: 秋·风
近日有网友说lazarus 自带的DB使用Filtered后RecordCount返回的记录数是全部记录数,经实测确实存在这个问题,看官网的论坛也有人反馈这个问题,不过官方一直没处理。
可以使用Helper来解决这个问题:
  TDatasetHelper = class helper for TDataset
  public
    function GetRecordCount:Longint;
  end;

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