【问题标题】:How do I solve the "Cannot perform this operation on a closed dataset" with Borland Database Engine and a Delphi application? [closed]如何使用 Borland 数据库引擎和 Delphi 应用程序解决“无法在封闭数据集上执行此操作”的问题? [关闭]
【发布时间】:2011-10-10 02:50:41
【问题描述】:

该应用程序运行良好,直到我在 OpenOffice.org Calc 中编辑了用户数据库 (*.dbf)。现在它给了我关于关闭数据集的上述错误。

【问题讨论】:

  • Ehmm...如果无法对已关闭的数据集执行操作,您是否尝试打开数据集?
  • 如何打开它?我在 BDE 中单击了打开,但没有任何改变。 BDE 在每台客户端计算机上运行。数据库文件在服务器上。该程序已停止在所有客户端计算机上运行。
  • BDE 是 Borland 数据库引擎;作为一个引擎,它没有界面,因此没有“打开”按钮或菜单条目。你在哪里点击打开?
  • 我怀疑您的 DBF 文件已被 OpenOffice 损坏。尝试使用不同的 DBF 文件副本,并将此信息添加到问题本身!
  • @Cosmin Prund,我获得了 dbf 文件的新副本。一切都再次起作用。 OpenOffice 似乎损坏了文件。

标签: delphi dataset bde


【解决方案1】:

错误消息说,数据集未打开。 似乎你忘了打开它,或者你把它关闭了。

【讨论】:

    【解决方案2】:

    如果您运行您的应用程序,Delphi 将恢复数据集在 Delphi 表单设计器中的openclosed 状态。

    如果出现错误,Delphi 可以退出并关闭数据集。
    此外,您可能不小心关闭了设计器中的数据集,之后它不再在 ptogram 启动时自动打开。
    当需要使用数据集时,您将收到此错误,因为数据集已关闭。

    一种选择是在 FormCreate 事件中显式打开数据集并在其中添加错误处理代码,这将允许您查看错误消息并从那里进行调试。

    procedure TForm1.FormCreate(sender: TObject);
    begin
      try
        MyDBFTable.Open;
      except on exception e do 
        WriteErrorToLogFile('Cannot open MyDBFTable, error is: ' + e.message);
        // or 
        //ShowMessage('Cannot open MyDBFTable, error is: ' + e.message);
      end; {try}
    end;
    

    我总是在 FormCreate 中明确地打开数据集,因为这允许我记录任何错误。如果客户端应用程序出现异常,它会自动通过电子邮件发送给我。

    【讨论】:

    • 显然 OP 正在执行 BDE 管理员控制面板小程序中的操作:没有打开或关闭数据集,没有对象检查器。
    • @Cosmin,我知道我只是建议更改应用程序以便 OP 可以看到错误,或者将它们写入日志以便错误消息不会被隐藏。
    • @Johan:您如何将代码更改为 BDE Administrator,它是 Borland 十年或更长时间前编写并作为二进制(可执行)文件发布的?
    • @Ken,不在 BDE 中,在 Delphi 应用程序中,OP 告诉我们他写了一个 Delphi 应用程序。
    【解决方案3】:

    根据您自己的评论,您无法打开数据库文件,因为它已损坏。因此,您的错误并不意味着您忘记打开它,而是您的应用无法打开损坏的 .dbf 文件。

    您可能会收到此错误的其他不那么明显的原因,比您未能将表 Active 属性设置为 true 的明显原因,包括系统或 BDE 配置错误(ODBC 或 ADO,或其他 BDE 运行时文件丢失或未配置)打开文件所需的)

    【讨论】:

      猜你喜欢
      • 2014-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-04
      • 1970-01-01
      • 2014-06-16
      • 1970-01-01
      相关资源
      最近更新 更多