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;
トランザクションを有効にする必要はありませんか? 自動的に有効化されますか? この「トランザクションはアクティブではありません」というエラーを取り除くために、どこに焦点を当てる必要があるかについての手がかりを教えてください。