Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

# Как узнать количество записей в текущем диапазоне FDQuery в Delphi

Delphi , Синтаксис , Записи и Множества

Перед началом написания статьи стоит отметить, что вопрос касается использования компонентов FireDAC в среде разработки Delphi, а именно работы с диапазоном записей в FDQuery. Это важно для понимания контекста и структуры будущей публикации.


Как узнать количество записей в текущем диапазоне FDQuery в Delphi

В процессе перехода от использования ClientDataSet к компонентам FireDAC FDQuery в проектах на Delphi 10 Seattle, разработчики могут столкнуться с необходимостью проверки количества записей в определенном диапазоне. Это может быть полезно для различных задач, например, при выполнении специфических действий в зависимости от числа записей.

Проблема

При использовании ClientDataSet (CDS) разработчики могут легко проверить количество записей в заданном диапазоне следующим образом:

CDS.SetRange([Value1][Value2]);
k := CDS.RecordCount;
case k of
  1 : DoSingleThing; // Действие при одной записи
  2 : DoDoubleThing; // Действие при двух записях
else
  BailOnWrongCount; // Действие в случае неверного количества записей
end;

Однако, когда используется FDQuery с установленным FetchOptions.Mode := fmAll для получения всего набора данных одновременно, вызов FDQuery.RecordCount возвращает общее количество записей во всём наборе данных, а не в текущем диапазоне. Это заставляет разработчика вручную перебирать записи в диапазоне для подсчета.

Решение

Для решения этой проблемы необходимо установить свойство FetchOptions.RecordCountMode в значение cmVisible. Это позволит получить количество записей, доступных через навигационный API TDataSet (First, Next, Eof и т.д.), с учетом текущих настроек фильтрации/ограничения.

FDQuery.FetchOptions.RecordCountMode := cmVisible;

Комментарии

Важно понимать, что cmVisible не связано с отображением записей в пользовательском интерфейсе или TDBGrid. Это количество записей, которые доступны для перебора с учетом текущих настроек фильтрации и ограничений.

Разработчики могут быть запутаны из-за названия cmVisible, так как оно может не сразу указывать на то, что возвращаемое значение относится к подмножеству всех возможных записей, доступных в данный момент (фильтрованные или ограниченные диапазоном). Возможно, более точное название было бы cmAccessible, но это также может привести к недопониманию.


В заключение, использование свойства FetchOptions.RecordCountMode с установкой его в значение cmVisible позволяет разработчикам получить количество записей в текущем диапазоне FDQuery, что упрощает их работу и повышает эффективность кода.

Создано по материалам из источника по ссылке.

Объяснение использования компонента FireDAC для работы с диапазоном записей в FDQuery в среде разработки Delphi.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Записи и Множества ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-07-02 09:32:43/0.006289005279541/0