Informazioni richieste su TDataSetProvider in Delphi
-
05-07-2019 - |
Domanda
Ho un progetto Midas che utilizza un TDataSetProvider in uno dei RemoteDataModules nel server
Attualmente sto utilizzando i seguenti eventi
- BeforeApplyUpdates - per creare un oggetto
- BeforeUpdateRecord - per utilizzare l'oggetto
- AfterApplyUpdates - per eliminare l'oggetto
Domanda:
"AfterApplyUpdates" verrà sempre chiamato anche se si tratta di un errore di aggiornamento?
Soluzione
Se guardi il codice sorgente:
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;
Vedi che DoAfterApplyUpdates è chiamato nel blocco finally. Ciò significa che viene sempre chiamato riguardo a qualsiasi eccezione.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow