我正在从德尔菲7迁移到德尔福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;我们不需要激活交易吗?是自动激活的吗?请建议我的任何线索,我应该集中处理这个“事务不是活动的”错误。
发布于 2013-11-29 12:35:37
我刚刚设置了属性AutoReconnect = True of TFIBDatabase,它起了作用。
发布于 2013-11-26 09:47:05
有两种方法: 1.在execQuery或2之前启动事务。在TpFibQuery选项中设置选项字段qoStartTransaction,如:
Options := Options + [qoStartTransaction];https://stackoverflow.com/questions/20209824
复制相似问题