문제

서버의 Remotedatamodules 중 하나에서 tdatasetprovider를 사용하는 MIDAS 프로젝트가 있습니다.

현재 다음 행사를 사용하고 있습니다

  • BeforeapplyUpdates- 객체를 만들려면
  • 이전 UPDATERECORD- 객체를 사용합니다
  • AfterApplyUpdates- 객체를 맹렬히하기 위해

의문:

업데이트 오류 인 경우에도 'AfterApplyUpdates'가 항상 호출됩니까?

도움이 되었습니까?

해결책

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;

Yoy는 DoafterApplyUpdates가 마침내 블록에서 호출되는 것을 보았습니다. 이것은 항상 모든 예외의 존경이라고 불린다는 것을 의미합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top