如何在 SetRange 活动时获取 FireDAC 记录数
How to get FireDAC record count when SetRange active
我在我的项目中慢慢地从 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
总是 returns 整个数据集的记录数(根据 fmAll)——而不是当前范围。
我不得不手动遍历范围计数记录。
是否有更简单的方法来获取当前范围内的记录数?
将 FetchOptions.RecordCountMode 设置为 cmVisible:
http://docwiki.embarcadero.com/Libraries/Seattle/en/FireDAC.Stan.Option.TFDFetchOptions.RecordCountMode
我在我的项目中慢慢地从 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
总是 returns 整个数据集的记录数(根据 fmAll)——而不是当前范围。
我不得不手动遍历范围计数记录。
是否有更简单的方法来获取当前范围内的记录数?
将 FetchOptions.RecordCountMode 设置为 cmVisible: http://docwiki.embarcadero.com/Libraries/Seattle/en/FireDAC.Stan.Option.TFDFetchOptions.RecordCountMode