TDataSetProvider的ResolveToDataSet属性决定了数据集的更新方式。ResolveToDataSet为False时,是由 TSQLResolver类自动生成更新语句,直接更新到数据库。而当其值为True,是由TDataSetProvider所指定的TDataset类型控件产生更新数据的SQL语句,并更新到数据库.
OnUpdateError事件 = procedure(Sender: TObject; DataSet: TCustomClientDataSet;
E: EUpdateError; UpdateKind: TUpdateKind; var Response: TResolverResponse) of object;
参数:Sender 代表触发这个事件处理函数的对象。
DataSet:代表发生错误的数据集组件。
e:产生的异常对象,可以取得详细的错误信息。
UpdateKind:代表是什么操作造成的错误(新增,修改或删除)
Response:值由开发人员指定,delphi根据这个参数值来决定如何处理错误。
EUpdateError解释:
这个对象代表发生错误的原因以及数据库产生的原生错误码,有如下属性:
Context:错误堆栈的内容信息;ErrorCode:由BDE回传的错误码
PreviousError:前一次更新行动的错误码;OriginalException:代表这个更新错误的对象。
Response 详解:
rrSkip:跳过这笔产生错误的记录,并且把这笔记录继续留在内存之中。
rrAbort:中断整个的更新操作,并且 Rollback 所有更新的数据。
rrMerge:
rrApply:在OnUpdateError 事件处理函数中已经修改了错误,再更新数据一次。
rrIgnore:忽略产生错误的这笔记录