delphi 尝试删除记录时出现嵌套clientdataset异常

iecba09b  于 2023-10-18  发布在  其他
关注(0)|答案(1)|浏览(72)

我们刚刚将我们的软件从 Delphi 2009升级到 Alexandria ,它在某些地方坏了,总是与嵌套的客户端数据集有关。
例如,我刚刚追踪了
未找到记录或记录已被其他用户更改
从删除尝试中接收。主数据集包含3个子数据集-我们称它们为A、B和C。客户端数据集B和C“指向”SQL服务器上的同一个物理表。
Data.Win.ADODBTCustomADODataSet.PSExecute中,我可以看到生成的delete语句带有各自的参数:
1.表A中的记录被删除,在DataSnap.Provider、TSQLResolver.DoExecSQL中,我看到RowsAffected <> 0
1.表B中的记录被删除,在DataSnap.Provider、TSQLResolver.DoExecSQL中,我看到RowsAffected <> 0
1.表C中的记录是否被删除?在DataSnap.Provider、TSQLResolver.DoExecSQL中,我看到RowsAffected为0,并且触发了“Recordnot found or changed by another user”异常。
我假设发生这种情况是因为3)表C试图删除刚刚为表B删除的同一条记录-因此无法找到该记录并发生异常。
我的问题是:除了重新连接包含所有这些表的大部分数据模块之外,是否有一种更简单/更好的方法来说“如果删除表C失败也没关系”,以便整个主表删除都通过?

yshpjwxd

yshpjwxd1#

由于没有人提供建议,我咬紧牙关,将一个竞争的客户端数据集从嵌套改为独立-现在一切正常,就像我已经怀疑的那样。可惜我不得不走那条路,因为它给我留下了一个相当“不对称”的解决方案.

相关问题