在 TClientDataset 的 ReconcileError 方法中处理多个记录中的更新错误
我试图使用 ReconcileError 事件来允许用户在特定记录等发生更新错误后更正数据。
示例:
我有一个包含 1 个字段和 3 条记录的数据集,该字段对数据库有唯一约束,然后我更改一个值以使其在到达数据库时发生冲突,然后我对数据集调用 ApplyUpdates。
这将在提供程序中生成错误(违反唯一约束)并中止 applyupdates 进程,并在 ReconcileError 方法的 Action var 中返回 raAbort。
在 ReconcileError 方法中,我尝试使用:
Action := HandleReconcileError(aDataSet, UpdateKind, E);
** 编辑 **
在调试和转储从服务器返回的 DataSet 记录后,我注意到此 Dataset 中有 2 条记录,第一个是旧记录,第二个包含所有记录我对第一条记录所做的更改。
我有点困惑,我总是会得到这个有 2 条记录的 DataSet 吗?我认为它应该只有一条包含旧/新值的记录。
谢谢。
I'm trying to use the ReconcileError event to allow the user to correct the data after an update error which occurred in a specific record among others.
Example:
I have a dataset with one field and 3 records, this field have a unique constraint on the database, then I change one value to conflict when it reaches the database, then I call ApplyUpdates on the Dataset.
This will generate an error (violation of unique constraint) in the provider and abort the applyupdates process, returning raAbort in the Action var of the ReconcileError method.
In the ReconcileError method I tryied to use:
Action := HandleReconcileError(aDataSet, UpdateKind, E);
** EDIT **
After debugging and dumping the DataSet records which were returned from the server, I noticed that there are 2 records in this Dataset, the first is the Old record and the second have all the changes I made to the first record.
I'm a bit confused, will I always get this DataSet with 2 records? I thought that it should have only one record with the Old/New values.
Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
经过一番调试和阅读后,我得出以下结论:
After a bit of debugging and reading I figured out the following:
传递给 OnReconcileError 或 OnUpdateError 的记录是无法应用更新的记录。根据D2007帮助文件(注意这是一个帮助文件链接而不是 Web 链接!) - 请注意有关 DataSet 参数的部分:
The record passed to OnReconcileError or OnUpdateError is the record that couldn't have updates applied. According to the D2007 help file (note this is a help file link and not a web link!) - note the section regarding the DataSet parameter:
在dbExpress中你会发现TSQLConnection组件,在参数中有一个条目Mars_Connection,默认设置为False,将其设置为True并且错误消息已解决
In dbExpress you will find with TSQLConnection component, in the parameters an entry, Mars_Connection,which is set to False by default, set this to True and the error message is resolved