删除记录时出现 NO_SQL_DATA 错误,firedac,delphi 10.3.1

Posted

技术标签:

【中文标题】删除记录时出现 NO_SQL_DATA 错误,firedac,delphi 10.3.1【英文标题】:NO_SQL_DATA error when deleting a record, firedac, delphi 10.3.1 【发布时间】:2019-03-26 14:32:18 【问题描述】:

使用 sql server 和 delphi 10.3.1 和 fireac。

我正在使用缓存更新,并启用自动提交。

我一直设法使我的数据进入记录已从数据库中删除的状态,并且我还删除了数据集中的该记录。

然后,当它尝试将更改提交到数据库(数据不再存在)时,我收到一个错误: [我的应用程序] 引发异常类 emssqlNativeException 并带有消息 [firedac][Phys][odbc][sqlncli11.dll] SQL_NO_DATA 然后我无法清除数据集上的缓存更新标志,因为那里“坐”着东西。

我的问题 - 我怎样才能让它不返回那个错误?因为它真的不是错误,它试图删除不再存在的记录。我没有找到关于查询更新选项的任何文档,所以我需要设置一个标志吗?

【问题讨论】:

使用OnUpdateError 处理更新错误。对于您想在错误输出后忽略/跳过的更新,请为 AAction 返回 eaApplied 【参考方案1】:

您可以处理OnUpdateError 中的更新错误,并在决定如何继续之前执行任何其他检查。盲目地假装所有删除都有效是这样的:

procedure TForm1.FDQuery1UpdateError(ASender: TDataSet; AException:
    EFDException; ARow: TFDDatSRow; ARequest: TFDUpdateRequest; var AAction:
    TFDErrorAction);
begin
   if ARequest = ARDelete then AAction := eaApplied;
end;

阅读OnUpdateError 的在线帮助以了解更多信息。

【讨论】:

以上是关于删除记录时出现 NO_SQL_DATA 错误,firedac,delphi 10.3.1的主要内容,如果未能解决你的问题,请参考以下文章

SQL删除操作问题,3点时一个错误导致数据库资料完全混乱,那我想删除今天3点后的操作,需要啥语句?

删除时出现分段错误

将mysql与pythonanywhere一起使用时出现错误4

使用 OleDbDataAdapter 读取 CSV 文件时出现未指定的错误

创建记录时出现重复键错误

插入记录时出现语法错误或访问冲突