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) - 而不是当前范围。
我必须手动循环范围计数记录。
有没有更简单的方法来获取当前范围内的记录数?
将 FetchOptions.RecordCountMode 设置为 cmVisible: http://docwiki.embarcadero.com/Libraries/Seattle/en/FireDAC.Stan.Option.TFDFetchOptions.RecordCountMode