|
Компоненты доступа к данным
Так как компоненты 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,
а затем перейдем к компонентам.
|