Frage

Ich habe MIDAS -Projekt, das einen TdatasetProvider in einem der remotedatamodulen auf dem Server verwendet

Derzeit benutze ich die folgenden Ereignisse

  • BeeApplyupdates - um ein Objekt zu erstellen
  • Vor OUPDATERECORD - Um das Objekt zu verwenden
  • AfterApplyUpdates - das Objekt zu zeichnen

Frage:

Wird "AfterApplyUpdates" immer aufgerufen, auch wenn es sich um einen Aktualisierungsfehler handelt?

War es hilfreich?

Lösung

Wenn Sie sich die Sourcecode ansehen:

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 sehen, dass DoafterApplyupdates im endgültigen Block aufgerufen wird. Dies bedeutet, dass es immer als Berücksichtigung einer Ausnahme bezeichnet wird.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top