我在主/详细模式下的数据集有问题。
我正在使用带有更新 1、DBExpress 和 Firebird 2.5.2 的 Delphi XE 我在两个表 (CDS) 之间有一个主/从关系,它使用主源/主域属性定义。
我的问题是,当我删除详细数据集中的所有记录并编辑主 ClientDataset 后,当我在 Detail ClientDataSet 中调用 CancelUpdates 方法时,我收到“密钥违规”异常。
此问题仅发生在详细数据集为空的情况下。
任何人都知道可能是什么问题?
编辑: 人们,我在我的框架中解决了“密钥违规”的问题。不确定是什么导致了问题,所以我暂时隔离了异常。
在同样的结构中,还有另一个问题,在这种情况下似乎是一个 Bug 的 DBExpress。
在下面的链接中,我创建了一个示例来模拟问题。
http://www.4shared.com/zip/gmT7GVPf/MestreDetalheBug.html
如何模拟问题:
1) 选择一个主记录;
2)在网格详细信息中,删除所有记录,但不保存。仅由 DbNavegador 删除。
3)继续网格主并更改主记录的任何值。您将看到记录详细信息网格重新出现详细信息。
仅当 DataSet Detail 为空时才会出现此问题。
我有一个框架,可以维护对缓存在工作台上的记录的所有更改,并且仅在用户单击“保存”按钮时才有效。找了一阵子的解决方法,就是在删除的时候在明细记录里面,已经在数据库里生效了。
有什么帮助吗?