我有一个在服务器的 RemoteDataModules 之一中使用 TDataSetProvider 的 Midas 项目
目前我正在使用以下事件
- BeforeApplyUpdates - 创建一个对象
- BeforeUpdateRecord - 使用对象
- AfterApplyUpdates - 破坏对象
问题:
即使是更新错误,是否总是会调用“AfterApplyUpdates”?
我有一个在服务器的 RemoteDataModules 之一中使用 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;
Yoy 看到在 finally 块中调用了 DoAfterApplyUpdates。这意味着它总是被调用,不管任何异常。