首页 > 代码库 > ClientDataSet中的错误处理
ClientDataSet中的错误处理
当修改数据发生错误时会先触发DataSetProvider.OnUpdateError事件处理过程然后触发ClientDataSet.OnReconcileError事件处理过程。
OnUpDateError原型:
procedure OnUpdateError( Sender: TObject;//触发此事件的对象 DataSet: TCustomClientDataSet; //产生错误的数据集 E: EUpdateError; //生成的错误对象 UpdateKind: TUpdateKind;//指示是什么操作产生的错误TUpdateKind = (ukModify, ukInsert, ukDelete); var Response: TResolverResponse//产生错误生的操作TResolverResponse = (rrSkip, rrAbort, rrMerge, rrApply, rrIgnore); ); { rrSkip:跳过产生错误的记录。 rrAbort:停止操作找RollBack。 rrMerge:把原数据与修改的数据合并。 rrApply:已更正错误,再次更新数据。 rrIgnore:忽略错误。 }
OnReconcileError原型:
procedure OnReconcileError( DataSet: TCustomClientDataSet; E: EReconcileError; //Context错误堆栈信息,ErrorCode:DBExpress返回的错误码 UpdateKind: TUpdateKind; //TUpdateKind = (ukModify, ukInsert, ukDelete); var Action: TReconcileAction//TReconcileAction = (raSkip, raAbort, raMerge, raCorrect, raCancel, raRefresh); ); { raSkip:跳过错误记录并在Delta中保留本条记录。 raAbort:停止操作并RollBack。 raMerge:合并属性Data和Delta中的数据。 raCorrect:已更正错误继续更新。 raCancel:取消对错误记录的修改恢复原数据。 raRefresh:取消错误记录的修改并以当前数据代替这个记录。 }
在处理错误时还可以通过以下属性获取错误字段的之前现在的值。
Fields[Index].Value:当前修改后的值。
Fields[Index].OldValue:修改之前的值。
Fields[Index].NewValue:在错误处理过程中设置的新值。
Fields[Index].CurValue:在数据源中的值。
当更新数据出现错误时可以非常灵活的处理既可以让程序自己处理或不做处理,还可以返回错误信息和数据让用户自己处理。
ClientDataSet中的错误处理
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。