Компонент TIBTransaction инкапсулирует средства управления транзакцией при работе с сервером InterBase. Для этого он должен быть связан с компонентом TïBDatabase при помощи своего свойства
property tefaultCatabase: TiBCatabase;
Один компонент транзакции может быть связан с несколькими компонентами TïBDatabase. Для этого необходимо задать один компонент транзакции в свойствах DefaultTransaction всех необходимых компонентов соединений (см. выше).
Список всех связанных компонентов соединений содержится в свойстве property Databases[Index : Ihteger]: TiBDatabase; a их общее число возвращает свойство
property DatabaseCount : Ihteger;
Во время выполнения новое соединение может быть связано с транзакцией методом
flinctionAddDatabase(db: TIBEatabase) : Ihteger; Или же, связь может быть отменена: prœedure RemoveDatabase ( Idx : Ihteger) ; A метод
prœedure RemoveDatabases ;
разрывает все установленные связи с компонентом TIBDatabase.
Индекс связанного соединения в списке Databases транзакции можно получить при помощи метода
function FirrJEatabase (db: TIBEatabase) : Ihteger;
Например, если вам не известно ничего, кроме имени компонента, можно поступитьтак:
var i, FIndex: Ihteger;
for i := 0 to Forml.ComponentCount - 1 do if Forml.Components[i].Name = 'IBDatabasel' then FIndex :=
IBTransactionl.FindDatabase(TIBDatabase(Forml.Components[i]));
Соединение, заданное по умолчанию свойством EtefaultEatabase, возвращает метод
function FindDefaultDatabase: TIBDatabase;
Транзакция может иметь набор параметров, задать которые можно при помощи свойства
prcperty Params : TStrings;
аналогично компоненту TIBDatabase. Прямой доступ для чтения к буферу параметров транзакции Transaction Parameters Buffer (ТРВ) типа pchar обеспечивает свойство
propertyTPB: PChar;
Длина буфера содержится в свойстве
prcperty TPBLength: Short; Дескриптортранзакциипредставленсвойством prcperty Handle: tisc_tr_handle,-
После того как транзакция настроена, ее можно начать, сохранить или отменить.
Транзакция стартует при помощи метода
procedure StartTransaction;
При необходимости сохранить все сделанные в рамках текущей транзакции изменения используется метод
procedure Ccmrdt;
Если выполненные действия нужно отменить, применяется метод
procedure Rollback;
Для открытия и сохранения транзакции можно использовать традиционное свойство
property Active: Boolean;
После начала новой транзакции свойство
property InTransaction: Boolean;
принимает значение True, а после фиксации или отката - значение False.
При работе с сервером InterBase 6.0 можно использовать методы Commit-Retaining И RollbackRetaining. В ОГЛИЧИе от стандартных операций фиксации и отката транзакций, эти методы после передачи или отмены изменений оставляют текущую транзакцию открытой.
Если сервер перегружен и не откликается на транзакцию, то по истечении времени, заданного свойством
property IdleTimer: Integer;
выполняется действие, заданное свойством
type TTransactionAction = (taRollback, taCommit, taRollbackRetaining, taCommitRetaining);
property DefaultAction: TTransactionAction;