Ошибка выдачи транзакции 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];
Другие вопросы по тегам