尝试删除记录时出现嵌套客户端数据集异常

问题描述 投票:0回答:1

我们刚刚将软件从 Delphi 2009 升级到 Alexandria,它在某些地方出现了问题,总是与嵌套的客户端数据集相关。

例如,我刚刚追踪到错误

其他用户未找到或更改记录

从删除尝试中收到。主数据集包含 3 个子数据集 - 让我们称它们为 A、B 和 C。客户端数据集 B 和 C “指向”我们 SQL 服务器上的同一个物理表。

Data.Win.ADODB
TCustomADODataSet.PSExecute
中,我可以看到生成的删除语句带有各自的参数:

  1. 表 A 中的记录被删除,并且在 DataSnap.Provider、TSQLResolver.DoExecSQL 中我看到 RowsAffected 为 <> 0
  2. 表 B 中的记录被删除,并且在 DataSnap.Provider、TSQLResolver.DoExecSQL 中我看到 RowsAffected 为 <> 0
  3. 表 C 中的记录被删除???,并且在 DataSnap.Provider、TSQLResolver.DoExecSQL 中,我看到 RowsAffected 为 0,并且触发了“记录未找到或被其他用户更改”异常。

我认为发生这种情况是因为 3) 表 C 尝试删除刚刚为表 B 删除的相同记录 - 因此无法找到该记录并发生异常。

我的问题:除了重新连接包含所有这些表的大部分数据模块之外,是否有一种更简单/首选的方法来表示“如果表 C 上的删除失败也没关系”,以便整个主表删除都完成?

delphi nested dataset delphi-11-alexandria
1个回答
0
投票

由于没有人提出建议,我硬着头皮将其中一个竞争客户端数据集从嵌套更改为独立 - 现在一切正常,就像我已经怀疑的那样。太糟糕了,我不得不走这条路,因为它给我留下了一个相当“不对称”的解决方案......

© www.soinside.com 2019 - 2024. All rights reserved.