Informações exigidas no TdatasetProvider em Delphi
-
05-07-2019 - |
Pergunta
Eu tenho um projeto MIDAS que usa um TDatasetProvider em um dos Remotedatamodules no servidor
Atualmente estou usando os seguintes eventos
- BeforeAppllyUpdates - para criar um objeto
- Antes da Updaterecord - para usar o objeto
- AfterAppllyUpdates - para destorar o objeto
Pergunta:
'AfterAppllyUpdates' sempre será chamado, mesmo que seja um erro de atualização?
Solução
Se você olhar para o SourCecode:
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;
Você veja que o DoafterapplyUpdates é chamado no bloco Finalmente. Isso significa que sempre é chamado de considerações de qualquer exceção.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow