近日有网友说lazarus 自带的DB使用Filtered后RecordCount返回的记录数是全部记录数,经实测确实存在这个问题,看官网的论坛也有人反馈这个问题,不过官方一直没处理。
可以使用Helper来解决这个问题:
可以使用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;