Я медленно перехожу из компонентов ClientDataSet в FireDAC FDQuery в свои проекты (Delphi 10 Seattle).Как получить счетчик записи FireDAC, когда SetRange активен
Один трюк, который я часто использую с 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) - не текущий диапазон.
Мне нужно прокручивать записи счетчиков диапазона вручную.
Есть ли более простой способ получить количество записей в текущем диапазоне?
Еще раз стало очевидным. Спасибо за это - разработав настройку FetchOptions.Mode соответствующим образом, я полностью пропустил RecordCountMode (вернее, прочитал об этом некоторое время назад и полностью забыл). Медленно опережайте это и очень благодарны за вашу поддержку. – edbored
- чтобы быть уверенным - делает cmVisible возвращает другой результат, если подключен к DBGrid? Я думаю, это то, что изначально меня смутило: это не видимые в настоящее время записи в сетке, но на самом деле это подмножество всех возможных записей, которые в настоящее время доступны - независимо от того, отфильтрованы или ограничены диапазоном - это правильно? – edbored
cmVisible означает количество записей, которые доступны через навигационный API TDataSet (First, Next, Eof и т. Д.) Со всеми текущими настройками фильтрации/ограничения. cmVisible не связан с GUI или TDBGrid. Может быть, лучше имя будет cmAccessible, но это имя может привести к другим сомнениям ... –