Ошибка выдачи транзакции TpFIB: транзакция не активна в Delphi XE4 с FIBPlus 7.5
Я мигрирую с Delphi 7 на Delphi XE4. С Delphi XE4 я использую FIBPLUS 7.5. Приложение Delphi 7 работает нормально, но я получаю ошибку времени выполнения в Delphi XE4:
"Project abc.exe raised exception class EFIBClientError with message frmABC.transRead: Transaction not active"
Файл PAS
var
transRead: TpFIBTransaction;
...
...
//transRead is used like this
with TpFIBQuery.Create(Self) do
begin
Database := dbMyDB;
Transaction := transRead;
SQL.Add ('Select .....');
ExecQuery;
Close;
Free;
end;
DFM File
object transRead: TpFIBTransaction
DefaultDatabase = dbMyDB
TimeoutAction = TARollback
Left = 192
Top = 196
end
Я искал все файлы pas и dfm во всем проекте. Я не нашел ни одного утверждения, как это:
transRead.Active := True;
Но я нашел следующее утверждение во многих местах:
if transRead.Active then
begin
..........
..........
end
Я также видел это в некоторых местах:
transRead.Active := False;
Разве нам не нужно активировать транзакцию? Это автоматически активируется? Пожалуйста, предложите мне любую подсказку, на которой я должен сосредоточиться, чтобы избавиться от этой ошибки "Транзакция не активна".
2 ответа
Я просто установил свойство AutoReconnect = True
базы данных TFIB и все заработало.
Есть два способа: 1. Запустить транзакцию перед execQuery или 2. Установить поле параметров qoStartTransaction в параметрах TpFibQuery, например:
Options := Options + [qoStartTransaction];