Компоненты доступа к данным
Так как компоненты InterBase Express используют для получения набора данных собственный механизм, то иерархия классов-предков включает только обязательный для всех наборов данных
TDataSet класс TiBCustomDataSet, который, собственно, и инкапсулирует механизм доступа InterBase Express (см. рис. 12.1).
Для связи с базой данных компоненты InterBase Express применяют компоненты соединения
TiBDatabase (см. выше). Для этого они используют свойство
property Database: TiBDatabase;
Доступ к связанной транзакции осуществляется через свойство
property Transaction: TIBTransaction;
Дополнительно к стандартным свойствам и методам, описываемым в гл. 12,
класс TiBCustomDataSet имеет свойство
type TIBUpdateRecordTypes = set of (cusModified, cuslnserted, cusDeleted,
cusUnmodified, cusUninserted);
property UpdateRecordTypes: TIBUpdateRecordTypes;
cusModified — модифицированные записи;
cuslnserted — добавленные записи;
cusDeleted — удаленные записи;
cusUnmodified — немодифицированные записи;
cusUninserted — недобавленные записи.
Данное свойство определяет записи набора данных, на которые распространяются операции кэширования.
Свойство
property BufferChunks: Integer;
определяет число записей, которые компонент загружает в собственный локальный буфер для ускорения выполнения стандартных операций.
При использовании компонентов в приложениях необходимо учитывать некоторые особенности.
Обновление набора данных выполняется не при каждом сохранении изменений. Такое поведение компонента определяется свойством
property ForcedRefresh: Boolean;
которое по умолчанию имеет значение False.
Это ускоряет работу компонента. При необходимости выполнять обновление данных с максимальной частотой свойству
ForcedRefresh нужно присвоить значение
True.
В зависимости от настроек компонента, с ним можно выполнять различные виды операций редактирования, перечень которых содержится в свойстве "только для чтения":
type
TLiveMode = (Imlnsert, ImModify, ImDelete, ImRefresh);
TLiveModes = set of TLiveMode; property LiveMode: TLiveModes;
Так как все эти компоненты предназначены для работы с сервером, то изначально все они поддерживают режим кэширования изменений и имеют соответственные свойства, методы и методы-обработчики событий (табл. 18.2).
Таблица 18.2. Методы-обработчики
событий класса TiBCustomDataSet
|
|
property Af terDatabaseDisconnect: TNotifyEvent;
|
Выполняется после закрытия соединения с базой данных
|
property AfterTransactionEnd: TNotifyEvent;
|
Выполняется по окончании транзакции, с которой связан данный набор данных
|
property Bef oreDatabaseDisconnect: TNotifyEvent;
|
Выполняется перед закрытием соединения с базой данных
|
property BeforeTransactionEnd: TNotifyEvent;
|
Выполняется перед окончанием транзакции, с которой связан данный набор данных
|
property DatabaseFree: TNotifyEvent;
|
Выполняется при обнулении свойства Database компонента набора данных
|
type
TIBUpdateAction = (uaFail, uaAbort, uaSkip, uaRetry, uaApplied, uaApply) ;
TIBUpdateErrorEvent = procedure ( DataSet : TDataSet ; E: EDatabaseError; UpdateKind: TUpdateKind; var UpdateAction: TIBUpdateAction) of object;
property OnUpdateError: TIBUpdateErrorEvent ;
|
Вызывается при возникновении ошибки сохранения изменений в режиме кэширования
|
type
TIBUpdateAction = (uaFail, uaAbort, uaSkip, uaRetry, uaApply, uaApplied);
TIBUpdateRecordEvent = procedure ( DataSet : TDataSet ; UpdateKind: TUpdateKind; var UpdateAction: TIBUpdateAction) of object;
property OnUpdateRecord: TIBUpdateRecordEvent ;
|
Вызывается при сохранении изменений в режиме кэширования
|
property TransactionFree: TNotifyEvent;
|
Выполняется при обнулении свойства Transaction компонента набора данных
|
Возможности компонентов TIBTable, TIBQuery, TIBStoredProc, TIBUpdateSQL
мало чем отличаются от стандартных, описанных в гл. 12.
Для взаимодействия с сервером компоненты InterBase Express используют два класса, которые инкапсулируют важные структуры API InterBase. Эти структуры обеспечивают передачу серверу параметров запроса и возвращение результата выполнения запроса. Поэтому сначала рассмотрим классы
TIBXSQLDA и TIBXSQLVAR, а затем перейдем к компонентам.
|