3

在我的项目(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) - 而不是当前范围 。

我不得不手动遍历范围计数记录。

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

4

1 回答 1

4

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

于 2016-03-28T06:53:09.750 回答