2

我正在创建一个应用程序,需要我将大量数据发布到表中以及更改表中的值。

每当我编写应用程序时,我的大部分时间似乎都在停止错误,例如:

'无法在封闭的数据集上执行此方法'`

或者

'tblName 不在编辑或插入模式'`

我似乎每次都得到这些,而且它们不容易调试并找出哪里出了问题。

我只是在寻找一些关于如何阻止这种情况发生的指导,我知道这是我正在做的事情。例如,目前我得到:

'无法对关闭的数据集执行此操作'

此代码中的某处:

procedure TfrmMain.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  if not tblSystem.Active then
    tblSystem.Open;

  if not tblSpecs.Active then
    tblSpecs.Open;

  tblSpecs.Edit;
  tblSpecs.Post;
  tblSpecs.Close;

  // Post changes to the notes on exit
  tblSystem.Edit;
  tblsystem.Post;
  tblSystem.Close;
end;

procedure TfrmMain.chkAutoUpdateClick(Sender: TObject);
begin
  tblSystem.Edit;
  if chkAutoUpdate.Checked then
    chkInstUpdates.Enabled := True
  else
  begin
    chkInstUpdates.Enabled := False;
    tblSystemAutoUpdate.AsBoolean := False;
  end;
end;

我将立即假设这是从表中推送/拉取数据的错误代码,任何帮助将不胜感激。此外,任何调试帮助都会令人惊叹。

4

1 回答 1

2

如果我猜的话,我会说是这一行:

tblSystemAutoUpdate.AsBoolean := False;

您正在尝试编辑数据集字段的值,但实际上并未打开其数据集。

WRT 调试帮助,当您收到异常消息并要求您中断或继续时,请选择中断。堆栈跟踪视图(标准布局中的左上窗格)将向您显示当前线程的函数调用堆栈,并且应该能够引导您直接找到它。此外,请确保在启用“使用调试 DCU”项目选项的情况下构建代码的开发人员版本。这将让您在调试器中跟踪 RTL 和 VCL 单元。

于 2012-04-16T18:50:47.207 回答