如何使用Borland数据库引擎和Delphi应用程序解决“无法在已关闭的数据集上执行此操作”?

时间:2011-07-21 10:28:17

标签: delphi dataset bde

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

3 个答案:

答案 0 :(得分:1)

错误消息显示您的数据集未打开。 好像你忘了打开它,或者你把它关在某个地方。

答案 1 :(得分:1)

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

您可能会遇到此错误的其他不那么明显的原因,而不是您将表Active属性设置为true的显而易见的原因,包括系统或BDE配置错误(缺少ODBC或ADO或其他BDE运行时文件)或未配置)打开文件

答案 2 :(得分:0)

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

如果有错误,Delphi可以退出并关闭数据集 此外,您可能会意外关闭设计器中的数据集,之后不再在ptogram start上自动打开。
当使用数据集时,您将收到此错误,因为数据集已关闭。

一个选项是在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中显式打开数据集,因为这允许我记录任何错误。如果客户端应用程序有异常,它会自动通过电子邮件发送给我。