Библиотека компонент EhLib Руководство разработчика



страница10/13
Дата09.08.2019
Размер456 Kb.
#128179
ТипРуководство
1   ...   5   6   7   8   9   10   11   12   13

Агрегированные поля.


MemTableEh поддерживает обработку агрегированных полей (поля типа TAggregateField). TAggregateField представляет агрегированную величину (такую как SUM, COUNT) в dataset’е. В режиме Design-time используйте Fields Editor, чтобы создать persistent агрегированное роле, которое вы можете привязать к компоненту TDBEditEh или к футеру в TDBGridEh.

Сортировка данных.


Для сортировки данных в TMemTableEh используйте свойство SortOrder. Несколько полей разделяйте запятой. Для сортировки по убыванию, после названия поля добавляйте слово ‘DESC’. Сортировка происходит на уровне TRecordsViewEh, т. е. физически записи в массиве данных TRecordsListEh не перемещаются.


Создание/удаление таблиц в памяти в режиме ‘stand-alone’.


MemTableEh позволяет создавать внутренний массив записей в режиме Design-time и в режиме Run-time. Прежде, чем создавать массив, Вы должны задать свойства компонента, для определить структуру массива, который Вы создаете. В частности, Вы должны задать:

Структуру поля нового массива. Существует два способа сделать это:

Вы можете добавить определения полей в свойстве FieldDefs. В режиме Design-time, двойной-щелчкок в инспекторе объектов на свойстве FieldDefs открывает окно редактора коллекии. Используйте редактор, чтобы добавить, удалить, или изменить свойства определения поля. В режиме Run-time, очистите все определения и используйте метод AddFieldDef, чтобы добавить новое определение поля. Для каждого нового определения поля, задайте свойства объекта TFieldDef чтобы установить желаемые атрибуты поля.

Кроме того вы можете использовать жеские (pesistent) поля. В режиме Design-time, двойной-щелчкок на dataset’е, открывает окно редактировани полей. В редакторе полей, нажмите правую кнопу мышки и выберите команду “New Field”. Впишите основные свойства вашего поля. После создания pesistent поля, Вы можете изменить свойства поля в Инспекторе обьектов выбрав требуемое поле в редакторе Полей.


Чтобы создавать внутренний массив в режиме Design-time, щелкните правой кнопкой мышки на dataset’е и выберите ‘Create DataSet’. Эта команда не появляется в контекстном меню пока Вы не определите всю необходимую информацию.

Чтобы создать внутренний массив режиме Run-time, вызовите метод CreateDataSet.


Если у компонента задано свойство DataDriver то внутренний массив создается автоматически при активизации MemTable’а.
Закрытие датасета режиме ‘stand-alone’ не уничтожает внутренний массив данных. Для закрытия с одновременным уничтожением всех данных и структуры массива используйте метод DestroyTable.
Для очисти всех записей внутреннего массива используйте метод EmptyTable. Структура массива и активность датасета не изменяются.

Работа с компонентом в режиме ‘with datadriver’.


Режим ‘with datadriver’ работает, когда присвоено свойство TMemTableEh.DataDriver. При активизации датасета внутренний массив данных создается автоматически при активизации MemTableEh’а. Структура полей предоставляется компонентом DataDriver.

Если свойство FetchAllOnOpen установелно в True, то при открытии MemTableEh загружает все записи из DataDriver’а. При FetchAllOnOpen = False MemTableEh автоматически не загружает записи, это должна делать программа или другой компонент. Для загрузки записей необходимо выполнить метод FetchRecords. Метод принимает один параметр - количество записей, которые вы хотите догрузить. Чтобы загрузить все записи, передайте в качестве значения параметра -1. При отображении данных в компоненте TDBGridEh Grid вызывает FetchRecords через интерфейс IMemTableEh чтобы отобразить все видимые записи на экране. По мере движения по DBGridEh вниз, он повторно вызывает FetchRecords, передавая в качестве параметра нужное количество записей.

В режиме ‘with datadriver’ все изменения передаются в метод ApplyUpdates компонента TDataDriver. Если свойство CachedUpdates = False то изменения передаются сразу после Post’а записи, если CachedUpdates = True то изменения передаются при вызове метода ApplyUpdates.

Отложенные обновления (CachedUpdates).


TMemTableEh может работать в режиме оперативных или отложенных обновлений. Режим обновления определяет, когда будет посылаться информация об измененных записях в компонент TDataDriverEh (при этом TSQLDataDriverEh и TXXXDataDriverEh сразу пошлют изменения на сервер). В режиме оперативного обновления TMemTableEh посылает информацию сразу после добавления записи или вызова метода Post. В режиме отложенного обновления TMemTableEh не посылает информацию об изменениях, а накапливает их в специальном буфере. Когда изменения закончены, приложение посылает кэшированные изменения в TDataDriverEh. Режим отложенного обновления устанавливается свойством CachedUpdates. Основные достоинства отложенных обновлений – это уменьшение количества транзакций, сокращение времени транзакции и минимизация сетевого трафика.

В режиме отложенного обновления изменения сделанные в TMemTableEh не посылаются в TDataDriverEh пока приложение не назовет метод TMemTableEh.ApplyUpdates. ApplyUpdates принимает единственный параметр, MaxErrors, который задает максимальное число ошибок, которое TDataDriverEh должен допустить до отказа процесса изменений. Если MaxErrors - 0, то при первой же ошибке, весь процесс изменений будет отвергнут (Если изменения происходили внутри транзакции). Если MaxErrors = -1, то допустимо любое число ошибок. Записи, обновления которых произошли с ошибками имеют дополнительное свойство UpdateError типа TUpdateErrorEh .

До посылки измененных записей в TDataDriverEh может быть полезным обеспечить отображение состояние изменений записей. Это особенно полезно, если Вы хотите позволить пользователю отменять определенные изменения или отображать тип изменения записи.

Для отображения информации об изменениях можно использовать метод UpdateStatus и свойство StatusFilter:

UpdateStatus указывает тип изменения текущей записи. Оно может возвращать одно из следующего значений:

usUnmodified Указывает, что текущая запись не изменялась.



usModified Указывает, что текущая запись была отредактирована.

usInserted Указывает, что запись была добавлена пользователем.

usDeleted Указывает, что запись была удалена пользователем.
StatusFilter определяет записи какого типа видны для навигации. StatusFilter работает с отложенными записями почти так же как работает фильтр в обычных данных. StatusFilter – это набор (Set), так что он может содержать любую комбинацию следующего величин:

usUnmodified Выводить неизмененные записи.

usModified Выводить модифицированные записи.

usInserted Выводить добавленные записи.

usDeleted Выводить удаленные записи.

По умолчанию, StatusFilter имеет значение [usModified, usInserted, usUnmodified]. Вы можете добавить значение usDeleted чтобы увидеть удаленные записи.

RevertRecord – восстанавливает старое состояние записи и значения полей. Если запись бы была добавлена в программе, то она удаляется из списка. Свойство UpdateStatus восстанавливается в значение usUnmodified.

MergeChangeLog – удаляет журнал отложенных изменений. Все добавленные или измененные записи получают статус usUnmodified.

CancelUpdates – отменяет все отложенные изменения и восстанавливает старое состояние записей.



Поделитесь с Вашими друзьями:
1   ...   5   6   7   8   9   10   11   12   13




База данных защищена авторским правом ©vossta.ru 2022
обратиться к администрации

    Главная страница