database - 处理表,防止数据集错误

标签 database delphi

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

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

'Cannot perform this method on a closed dataset'`

'tblName not in edit or insert mode'`

我似乎每次都会收到这些信息,但它们并不容易调试并找出哪里出了问题。

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

'Cannot perform this operation on a closed dataset'

这段代码中的某个地方:

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;

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

最佳答案

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

tblSystemAutoUpdate.AsBoolean := False;

您尝试在数据集未实际打开的情况下编辑数据集字段的值。

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

关于database - 处理表,防止数据集错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10179289/

相关文章:

php - 实现模型级缓存

php - 日期时间格式,更改格式。

delphi - 如何在VCL项目中包含FMX.Types

delphi - 在调用 Canvas.DrawBitmap (Firemonkey) 之前对位图应用转换

node.js - Mongodb 与 nodejs 的连接

sql - 根据连接的值将连接结果添加为新列

sql - 如何将不同工作表的Excel数据导出到SQL-SERVER数据库?

delphi - 有什么方法可以找出哪个 TField 正在引发 EDBClient 消息 'Field value required.' ?

delphi - 执行后台程序并继续执行代码?

delphi - 如何将 TFileStream 与 FILE_SHARE_DELETE 一起使用?