我正慢慢地从ClientDataSet转移到我的项目中的FireDAC FDQuery组件(Delphi 10 Seattle)。
我经常使用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) - 而不是当前范围。
我不得不手动遍历范围计数记录。
是否有更简单的方法来获取当前范围内的记录数?
答案 0 :(得分:4)
将FetchOptions.RecordCountMode设置为cmVisible: http://docwiki.embarcadero.com/Libraries/Seattle/en/FireDAC.Stan.Option.TFDFetchOptions.RecordCountMode