【问题标题】:Disable the Update Count check on FireDAC禁用 FireDAC 上的更新计数检查
【发布时间】:2020-09-02 11:52:15
【问题描述】:

在 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 查询的行为类似。

谢谢

【问题讨论】:

  • 连接也有更新选项,CountUpdatedRecords 也默认为 true。在分配连接后或在连接上尝试设置它。

标签: delphi firedac delphi-10.3-rio


【解决方案1】:

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

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

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

【讨论】:

  • 我也在迁移过程中,如果您接受并提出建议,我在使用 TFDTable 时遇到了很多麻烦,我开始使用 TFDQuery,它让我的生活变得更加轻松。与这个特定问题无关(我也遇到过 TFDQuery),但在许多其他问题上,TFDQuery 更适合主从关系,特别是处理缓存更新。
  • 最后,我对这个错误的体验是创建一个新的 TFDQuery 并再次执行所有操作,然后它开始正常更新。没有找到导致错误的旧 TFDQuery 的属性。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多