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

edb*_*red 3 delphi record-count 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;  
Run Code Online (Sandbox Code Playgroud)

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

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

我必须手动循环范围计数记录。

有没有更简单的方法来获取当前范围内的记录数?