如何在SetRange处于活动状态时获取FireDAC记录计数



在我的项目(Delphi 10 Seattle)中,我正慢慢地从ClientDataSet转向FireDAC FDQuery组件。

我经常使用CDS的一个技巧是检查范围内的记录计数。

即:

CDS.SetRange([Value1][Value2]);  
k := CDS.RecordCount;  
case k of  
  1 : DoSingleThing;  
  2 : DoDoubleThing;  
else  
  BailOnWrongCount;  
end;  

因为我需要同时提供整个数据集,所以在第一次打开查询时,我使用FetchOptions.Mode:=fmAll。

执行FDQuery.SetRange([Value1][Value2]);然后调用FDQuery.RecordCount总是返回整个数据集的记录计数(根据fmAll),而不是当前范围。

我不得不手动循环浏览范围计数记录。

有没有一种更简单的方法可以获得当前范围内的记录数?

将FetchOptions.RecordCountMode设置为cmVisible:http://docwiki.embarcadero.com/Libraries/Seattle/en/FireDAC.Stan.Option.TFDFetchOptions.RecordCountMode

最新更新