FireDAC.Comp.DataSet.TFDDataSet.OnUpdateError
Delphi
property OnUpdateError: TFDUpdateErrorEvent read FOnUpdateError
C++
__property TFDUpdateErrorEvent OnUpdateError = {read=FOnUpdateError, write=FOnUpdateError};
Inhaltsverzeichnis
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;