Información requerida en TDataSetProvider en Delphi
-
05-07-2019 - |
Pregunta
Tengo un proyecto Midas que utiliza un TDataSetProvider en uno de RemoteDataModules en el servidor
Actualmente estoy haciendo uso de los siguientes eventos
- BeforeApplyUpdates: para crear un objeto
- BeforeUpdateRecord: para usar el objeto
- AfterApplyUpdates: para destruir el objeto
Pregunta:
¿Siempre se llamará ‘AfterApplyUpdates 'incluso si es un error de actualización?
Solución
Si miras el código fuente:
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 ve que DoAfterApplyUpdates se llama en el bloque finally. Esto significa que siempre se le llama cualquier otra excepción.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow