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:忽略產生錯誤的這筆記錄