FireDAC.Comp.DataSet.TFDDataSet.OnUpdateError

Aus RAD Studio API Documentation
Wechseln zu: Navigation, Suche

Delphi

property OnUpdateError: TFDUpdateErrorEvent read FOnUpdateError  write FOnUpdateError;

C++

__property TFDUpdateErrorEvent OnUpdateError = {read=FOnUpdateError, write=FOnUpdateError};

Eigenschaften

Typ Sichtbarkeit Quelle Unit Übergeordnet
event public
FireDAC.Comp.DataSet.pas
FireDAC.Comp.DataSet.hpp
FireDAC.Comp.DataSet TFDDataSet

Beschreibung

Wird ausgelöst, wenn beim Eintragen von Aktualisierungen in eine Datenbank eine Exception erzeugt wird.

Mit der Ereignisbehandlungsroutine OnUpdateError reagieren Sie auf Exceptions, die beim Eintragen von sofortigen oder zwischengespeicherten Aktualisierungen in eine Datenbank auftreten.

ASender ist die Datenmenge, für die die Aktualisierungen eingetragen werden.

AException ist ein Zeiger auf ein EFDException-Objekt, aus dem in einer Anwendung eine Fehlermeldung und die eigentliche Ursache der Fehlerbedingung extrahiert werden können. In der Behandlungsroutine für OnUpdateError kann mit diesen Informationen festgelegt werden, wie auf die Fehlerbedingung reagiert werden soll. Das AException-Objekt ist meistens eine Instanz der Klasse EFDDBEngineException oder sogar einer ihrer DBMS-spezifischen Unterklassen.   ARow ist ein DatS-Zeilenobjekt, das einen fehlerhaften Datensatz in der Datenmenge repräsentiert. Dieser Datensatz ist auch der aktuelle Datensatz in ASender.

ARequest gibt an, ob der Fehler während des Einfügens, Löschens oder Änderns eines Datensatzes aufgetreten ist.

AAction gibt die Aktion an, die durchgeführt werden soll, wenn die Ereignisbehandlungsroutine OnUpdateError beendet wird. Bei Beginn der Ereignisbehandlungsroutine wird AAction immer auf eaDefault gesetzt, was – falls keine Änderung vorgenommen wird – zu uaFail führt. Falls der Fehler von OnUpdateError verarbeitet oder korrigiert werden kann, weisen Sie AAction vor dem Beenden der Ereignisbehandlungsroutine den Wert uaRetry zu, oder sehen Sie andere Optionen vor.

Mit den Eigenschaften OldValue und NewValue können in der Ereignisbehandlungsroutine Fehlerbedingungen überprüft und NewValue auf einen neuen Wert gesetzt werden. In diesem Fall muss AAction vor Beendigung der Routine auf uaRetry gesetzt werden.

Warnung: Im Code einer OnUpdateError-Ereignisbehandlungsroutine darf keine Methode aufgerufen werden, die einen anderen Datensatz zum aktuellen macht.

Beispiel

 
 procedure TForm1.FDQuery1UpdateError(ASender: TDataSet; AException: EFDException;
     ARow: TFDDatSRow; ARequest: TFDUpdateRequest; var AAction: TFDErrorAction);
 begin
   if (E is EFDDBEngineException) and (EFDDBEngineException(E).Kind = ekUKViolated) then begin
     DataSet.FieldByName('ID').AsInteger := GetNextFreeID;
     Action := eaRetry;
   end;
 end;

Siehe auch