Informations requises sur TDataSetProvider in Delphi
-
05-07-2019 - |
Question
J'ai un projet Midas qui utilise un TDataSetProvider dans l'un des RemoteDataModules du serveur
Actuellement, je profite des événements suivants
- BeforeApplyUpdates - pour créer un objet
- BeforeUpdateRecord - pour utiliser l'objet
- AfterApplyUpdates - pour supprimer l'objet
Question:
Est-ce que "AfterApplyUpdates" sera toujours appelé même s'il s'agit d'une erreur de mise à jour?
La solution
Si vous regardez le code source:
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;
Oui, vous voyez que DoAfterApplyUpdates est appelé dans le bloc finally. Cela signifie qu'il est toujours appelé le respect de toute exception.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow