サーバーの RemoteDataModules の 1 つで TDataSetProvider を使用する Midas プロジェクトがあります。
現在、私は次のイベントを利用しています
- BeforeApplyUpdates - オブジェクトを作成する
- BeforeUpdateRecord - オブジェクトを使用する
- AfterApplyUpdates - オブジェクトを破棄する
質問:
更新エラーの場合でも、'AfterApplyUpdates' は常に呼び出されますか?
サーバーの RemoteDataModules の 1 つで TDataSetProvider を使用する Midas プロジェクトがあります。
現在、私は次のイベントを利用しています
質問:
更新エラーの場合でも、'AfterApplyUpdates' は常に呼び出されますか?
ソースコードを見ると:
function TCustomProvider.DoApplyUpdates(const Delta: OleVariant; MaxErrors: Integer;
out ErrorCount: Integer; var OwnerData: OleVariant): OleVariant;
begin
SetActiveUpdateException(nil);
try
try
if Assigned(FOnValidate) then
FOnValidate(Delta);
DoBeforeApplyUpdates(OwnerData);
Self.OwnerData := OwnerData;
try
Result := InternalApplyUpdates(Delta, MaxErrors, ErrorCount);
finally
OwnerData := Self.OwnerData;
Self.OwnerData := unassigned;
end;
except
on E: Exception do
begin
SetActiveUpdateException(E);
raise;
end;
end;
finally
try
DoAfterApplyUpdates(OwnerData);
finally
SetActiveUpdateException(nil);
end;
end;
end;
最終ブロックで DoAfterApplyUpdates が呼び出されていることがわかります。これは、例外に関係なく常に呼び出されることを意味します。