首页 > 解决方案 > 禁用 FireDAC 上的更新计数检查

问题描述

在 TFDQuery 上调用 Post 时,我收到此错误:

[FireDAC][Phys][MSSQL]-312 Exact update affected [5] rows, while [1] was requested

通常,此检查对于警告您可能做错了什么非常有用,但在这种情况下,我想为 TFDQuery 上的每一行更新多个记录。有没有办法禁用 FDQuery Posts 的计数检查?

我正在尝试将 UpdateOptions.CountUpdateRecords 设置为 false,但它仍然会引发错误。

代码类似于:

q1:=TAEFDQuery.Create(Self);
q1.UpdateOptions.CountUpdatedRecords := False;  // I try to disable the count check
q1.Connection:=Fprincipal.dades;

q1.SQL.Text:='   SELECT NumeroOrdre,' +
             '         Palet,' +
             '         tipusPalets,' +
             '        numPaletFabricacio' +
             '  FROM DistribucioPalets' +
             '  WHERE  NumeroOrdre = ' + Ordre.ToString

q1.Open;
q1.Edit;
q1.FieldByName('numPaletFabricacio').AsInteger:=numPaletFabricacio;
q1.Post;

PS:我知道我可以很容易地用UPDATE命令替换它,但是这是我从ADO移植到FireDAC的程序并且有很多类似的查询,所以我想先看看是否有可以设置的配置属性FireDAC 查询的行为与原始 ADO 查询的行为类似。

谢谢

标签: delphifiredacdelphi-10.3-rio

解决方案


正如 Brian 提到的,在属性中的 TFDTable(或 TFDQuery)中,打开 UpdateOptions 分支,您会找到属性 CountUpdatedRecords,它确实避免了错误消息,我一直遇到问题,因为另一个更新触发的更新都混在一起了,但是没有错误信息。

在此处输入图像描述

您还可以在连接属性中修改此属性(在相同的 TFDQuery 或 TFDTable 属性Object Inspector中),打开 Connection --> Update Options --> CountUpdatedRecords 的分支并将其设置为 false。但是,如果您在连接上这样做,您将更改使用该连接的所有 TFDQuery/TFDTable 的此属性。

我遇到了同样的问题,这意味着,在更新 TFDQuery 中的一条记录时,我确实更新了同一数据源中受此更新影响的其他记录,并通过将此属性设置为 False 得到了此错误消息。更新执行错误,但我不再收到错误消息。

这是要修改的属性


推荐阅读