Delphi.FireDAC. Просмотр таблиц

Данная статья посвящена работе с таблицами в FireDAC. Компоненту TFDTable, который умеет отображать, фильтровать, сортировать и редактировать табличные данные. Основа для этой статьи – официальная документация.

-Старая версия

-Новая версия

Чтобы отображать базу данных, сортировать, фильтровать записи и редактировать данные, предназначен компонент TFDTable. Компонент генерирует инструкцию SELECT, основываясь на свойствах TFDTable и отправляет её в DBMS.

TFDTable имеет 2 главных режима

-Режим Live Data Window , который позволяет двунаправленную навигацию через большие объемы данных с минимальным использованием памяти.

-Стандартный режим. Этот режим похож на  TFDQuery. FDTable генерирует простую инструкцию SELECT и использует результирующее множество, чтобы перемещаться по табличным записям

Чтобы открыть таблицу, свойство TFDTable.TableName должно быть прописано. Опционально свойства IndexFieldNames и IndexName могут быть указаны. Чтобы использовать IndexName fiMeta должно быть включено в FetchOptions.Items, например таким образом

Live Data Window Mode

В режиме LDW FireDAC запрашивает и хранит в памяти только число записей, равное 2 * FetchOptions.RowsetSize. Когда приложение просматривает табличные данные, FireDAC автоматически скролит или позиционирует LDW к необходимой позиции. Это позволяет получить следующие преимущества:

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

-Позволяет двунаправленное перемещение

-Дает постоянно свежие данные, снижая необходимость обновлять множество

-Не создает задержки при получении всех данных, необходимых для подготовки сортировки, поиска записи, перемещению к последней позиции и так далее.

Свойство Filter, диапазонное фильтрование, IndexFieldNames и IndexName,  а также методы Locate и Lookup, установка RecNO, установка закладки и так далее, подготавливаются при помощи дополнительных команд SELECT или через установку дополнительных фраз для главной команды SELECT. После изменения этих свойств позиция курсора тоже меняется.

В режиме LDW свойство Filter работает как фраза WHERE из языка SQL.Чтобы сделать выражение совместимым с DBMS и local expression engine приложение может использовать FireDAC escape sequences, например

LDW всегда добавляет фразу ORDER BY к командами SELECT. Ключевые требования к корректному режиму LDW это https://www.medicinaclinic.org/онкологический-центр-софия

-таблица должна иметь уникальный ключ. Unique Identifying Fields

-Серверная и клиентская коллации должны совпадать. (Подробнее о коллации)

Хотя FireDAC минимизирует число генерируемых и исполняемых SQL команд  в LDW режиме. Он по прежнему загружает больше, чем FDQuery. Разработчикам нужно выбирать в зависимости от задачи.

Включение режима LDW

LDW режим работает автоматически, когда выполняются следующие условия:

В ином случае работает стандартный режим. Изменить режим можно только тогда, когда TFDTable в неактивном состоянии. В добавок, производительность может быть улучшена через изменение FetchOptions.LiveWindowParanoic (is False, by default) и FetchOptions.LiveWindowFastFirst (is False, by default).

В принципе, основные моменты по TFDTable мы просмотрели.

 

This entry was posted in Delphi, FireDAC. Bookmark the permalink.