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


Быстрый доступ к значениям записи



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

Быстрый доступ к значениям записи.


Для доступа к значениям полей конкретной записи в стандартном DataSet’е необходимо вначале перейти на нужную запись. Это не всегда удобно т.к. переход на запись методами MoveBy, RecNo, Bookmark активизирует события об изменении записи, что может привести к большим задержкам и перерисовкам экрана.

Для быстрого получения значения из конкретно записи без активизации события об изменении в MemTableEh можно использовать несколько способов.

Использовать методы DisableControls, EnableControls для деактивизации событий об изменениях в DataSet’е. Недостаток этого способа в том что EnableControls вызывает событие об изменении датасета что приведет к перерисовке визуальных компонент подключенных к DataSet’у.

Использовать методы InstantReadEnter, InstantReadLeave для перехода в режим InstantRead.

InstantReadEnter входит в режим просмотра записей и переходит на запись в DataSet’е определенную параметром RowNum. После этого вы можете читать значения записи. Каждому вызову метода InstantReadEnter, должен соответствовать вызов InstantReadLeave – выход из режима чтения записей. В режиме InstantRead нельзя менять значения полей записи. Методы InstantReadEnter, InstantReadLeave не посылают события об изменении позиции записи внешним компонентам.

Использовать свойства для доступа к внутренним объектам хранения данных. Внутренние объекты позволяют иметь доступ к значениям записей как к массиву данных по индексу. Кроме того вы можете обратится ко всем записям внутреннего массива данных без учета локального фильтра. Для доступа к внутренним структурам данных используйте следующие свойства объектам TMemTableEh:



RecordsView: TRecordsViewEh – ссылка на отфильтрованный список записей.

RecordsView.Rec[Index: Integer]: TMemoryRecordEh – доступ к конкретной записи в массиве отфильтрованных значений.

RecordsView.Count: Integer – количество записей в отфильтрован списке. В режиме TreeView учитываются только раскрытые ветви.

RecordsView.MemTableData.RecordsList[Index: Integer]: TMemoryRecordEh – доступ к конкретной записи в массиве всех записей.

RecordsView.MemTableData.RecordsList.Countколичество записей в списке всех записей.

RecordsView.MemTableData.RecordsList[Index: Integer].DataValues[const FieldNames: string; DataValueVersion: TDataValueVersionEh]: Variant – доступ к значению поля(ей) в записи с номером Index.

Копирование данных и структуры из/в внешнего DataSet’а.


TMemTableEh предоставляет следующие методы для копирования данных из/в внешних DataSat’ов в себя:
Метод SaveToDataSet

Копирует свои данные в другой DataSet, указанный в параметре Dest. Если параметр RecordCount > 0, то копирование начинается с текущей записи исходного DataSet’а и копируется не более RecordCount записей. Иначе копируются все записи, начиная с первой. Копирование происходит добавлением новых записей в Dest DataSet.


Метод LoadFromDataSet

Загружает не более RecordCount записей из DataSet’а, указанного в параметре Source. Если RecordCount = -1 то загружаются все записи. Параметр Mode определяет режим загрузки. Значение lmCopy определяет, что перед загрузкой надо удалить все записи. Значение lmAppend определяет что новые записи будут добавлены к старым данным.

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

Внутренние объекты компонента TMemTableEh.

В большинстве случаев для работы с данными вам TMemTableEh вам будет достаточно свойств и методов самого компонента. Однако в некоторых случаях необходимо иметь возможность обработки данных на более низком уровне. Компонент TMemTableEh хранить записи в специально внутреннем массиве данных и имеет семь основных объектов для обработки внутренних данных:

TMemTableDataEh – внутренняя таблица данных. Содержит в себе два объекта: TMTDataStructEh описывающий структуру полей таблицы и TRecordsListEh содержащий список записей типа TMemoryRecordEh.

TMTDataStructEh – класс описывающий структуру полей внутренней таблицы. Содержит список объектов наследуемых от TMTDataFieldEh.

TMTDataFieldEh – базовый класс для определения типа поля во внутренней таблице. Является парент-типом для классов TMTStringDataFieldEh, TMTNumericDataFieldEh, TMTDateTimeDataFieldEh, TMTBlobDataFieldEh, TMTBooleanDataFieldEh, TMTInterfaceDataFieldEh, TMTVariantDataFieldEh, TMTRefObjectFieldEh.

TRecordsListEh – содержит список записей типа TMemoryRecordEh.

TMemoryRecordEh – представляет одну запись в массиве записей.

TRecordsViewEh – содержит отфильтрованный список записей. Содержит только записи удовлетворяющие условию TMemTableEh.Filter.

TMemoryTreeListEh – содержит древовидный список с узлами типа TMemRecViewEh и ссылками на записи.
Доступ к внутренним объектам из TMemTableEh
RecordsView: TRecordsViewEh – ссылка на отфильтрованный список записей.

RecordsView.MemTableData: TMemTableDataEh – ссылка на внутреннюю таблицу данных.

RecordsView.MemTableData.AutoIncrement: TAutoIncrementEh – ссылка на объект настройки инкрементных значений.

RecordsView.MemTableData.DataStruct: TMTDataStructEh – ссылка на объект структуры полей внутреннего массива.

RecordsView.MemTableData.DataStruct[Index: Integer]: TMTDataFieldEh – доступ к описанию полей структуры внутреннего массива.

RecordsView.MemTableData.RecordsList: TRecordsListEh – ссылка на массив-список записей.

RecordsView.MemTableData.RecordsList[Index: Integer]: TMemoryRecordEh – доступ к конкретной записи в массиве записей.

RecordsView.MemTableData.RecordsList[Index: Integer].DataValues[const FieldNames: string; DataValueVersion: TDataValueVersionEh]: Variant – доступ к значению поля(ей) в записи с номером Index.



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




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

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