我正在从 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;
我们不需要激活交易吗?是自动激活的吗?请建议我任何线索,我应该集中精力摆脱这个“交易不活跃”错误。
最佳答案
有两种方法: 1. 在 execQuery 或之前启动事务 2. 在TpFibQuery的Options中设置options字段qoStartTransaction,如下:
Options := Options + [qoStartTransaction];
关于delphi - TpFIBTransaction 给出错误 : Transaction is not active in Delphi XE4 with FIBPlus 7. 5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20209824/