我正在尝试使用ReconcileError事件来允许用户在特定记录中发生更新错误之后更正数据。
示例:
我有一个包含一个字段和3个记录的数据集,该字段对数据库有唯一约束,然后在到达数据库时将一个值更改为冲突,然后在数据集上调用ApplyUpdates。
这将在提供程序中生成错误(违反唯一约束)并中止applyupdates进程,并在ReconcileError方法的Action var中返回raAbort。
在ReconcileError方法中,我尝试使用:
Action := HandleReconcileError(aDataSet, UpdateKind, E);
**编辑**
在调试并转储从服务器返回的DataSet记录之后,我注意到此数据集中有2条记录,第一条是旧记录,第二条记录是我对第一条记录所做的所有更改。
我有点困惑,我总是会得到这个带有2条记录的DataSet吗?我认为它应该只有一个带有旧/新值的记录。
感谢。
答案 0 :(得分:2)
经过一些调试和阅读后,我发现了以下内容:
答案 1 :(得分:1)
在dbExpress中你可以找到TSQLConnection组件,在参数中输入一个条目 Mars_Connection ,默认设置为 False ,将其设置为 True < / strong>并且错误消息已解决
答案 2 :(得分:0)
传递给OnReconcileError或OnUpdateError的记录是无法应用更新的记录。根据{{3}}(注意这是一个帮助文件链接而不是Web链接!) - 请注意有关DataSet参数的部分:
你应该总是编码 OnReconcileError或OnUpdateError 事件处理程序,即使只是丢弃 返回的记录不可能 应用。这些事件处理程序 两个事件的工作方式相同。他们 包括以下参数:
DataSet:一个客户端数据集 包含更新的记录 无法应用。你可以用它 数据集获取信息的方法 关于问题记录和编辑 该记录,以纠正任何 问题。特别是,你会想要的 使用CurValue,OldValue和 中的字段的NewValue属性 目前的记录来确定 更新问题的原因。然而, 您不能调用任何客户端数据集 更改当前记录的方法 在你的事件处理程序中。