delphi - TpFIBTransaction 给出错误 : Transaction is not active in Delphi XE4 with FIBPlus 7. 5

标签 delphi delphi-7 firebird delphi-xe4 fibplus

我正在从 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/

相关文章:

delphi - 从 Delphi 应用程序接收 MS Word 的自动化事件

windows - 在 Windows 64 位上将 libusb 与 Delphi 一起使用?

c++ - 将函数名称从 C++ Dll 导出到 Delphi

string - Delphi 'string' 文字怎么可能超过 255 个字符?

c# - 文件的磁盘结构不受支持的错误...找到 11.1,支持 12.0

delphi - 在 Delphi 7 中加载仅 CR 分隔的文件文本时如何解决问题?

delphi - 新事件的插入位置

javascript - 将数据从浏览器 Javascript 传递到 Delphi 应用程序

firebird - 如何为 Firebird 数据库创建用户

mysql - Firebird 到 MySQL 查询迁移 - 选择内部连接子查询