FireDAC.Comp.DataSet.TFDDataSet.OnReconcileError

Aus RAD Studio API Documentation
Wechseln zu: Navigation, Suche

Delphi

property OnReconcileError: TFDReconcileErrorEvent read FOnReconcileError  write FOnReconcileError;

C++

__property TFDReconcileErrorEvent OnReconcileError = {read=FOnReconcileError, write=FOnReconcileError};

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 eine Datenmenge die Aktualisierung eines Datensatzes abstimmen muss, die nicht zugewiesen werden kann.

Mit der Ereignisbehandlungsroutine OnReconcileError reagieren Sie auf Fehlerbedingungen, die auftreten, wenn die Methode ApplyUpdates Änderungen an Datenbankdatensätzen einträgt. Die Ereignisbehandlungsroutine OnReconcileError wird von der Methode Reconcile aufgerufen.

Beim Aufrufen von Reconcile durchläuft die Datenmenge in einer Schleife alle Datensätze mit den zugewiesenen Exception-Objekten. Für jeden dieser Datensätze wird die Ereignisbehandlungsroutine OnReconcileError aufgerufen. Die Ereignisbehandlungsroutine übernimmt:

  • E – die Referent auf das Exception-Objekt. Im Thema Fehlerbehandlung finden Sie Informationen zum Arbeiten mit Exception-Objekten.
  • UpdateKind – die Aktualisierungsart des aktuellen Datensatzes. Folgende Werte sind möglich: rsInserted, rsDeleted, rsModified, rsUnchanged.

Nach der Fehlerbehandlung sollte die Ereignisbehandlungsroutine das Argument Action festlegen. Der Vorgabewert lautet raMerge. Die folgenden Werte sind möglich:

Aktion

Beschreibung

raSkip

Überspringt den aktuellen Datensatz.

raAbort

Beendet den Reconcile-Aufruf

raMerge

Leert den Fehlerstatus des aktuellen Datensatzes. Die Änderungen an dem Datensatz werden dadurch zum Ausgangsstatus dieses Datensatzes. D. h. die Änderungen werden in den Datensatzzwischenspeicher aufgenommen.

raCorrect

Löscht den aktuellen Fehlerstatus des Datensatzes. D. h. der Datensatz wird als korrekt übernommen.

raCancel

Annulliert die Änderungen des aktuellen Datensatzes.

raRefresh

Annulliert die Änderungen des aktuellen Datensatzes und liest die Datensatzwerte erneut aus der Datenbank.

Die Ereignisbehandlungsroutine kann die ursprünglichen und die aktuellen Feldwerte anhand der Eigenschaften OldValue und NewValue analysieren. In der Anwendung kann der aktuelle Feldwert auch aktualisiert, Action auf raCorrect gesetzt und später wieder ApplyUpdates aufgerufen werden.

Beispiel

 
 procedure TForm1.FDMemTable1ReconcileError(DataSet: TFDDataSet; E: EFDException;
   UpdateKind: TFDDatSRowState; var Action: TFDDAptReconcileAction);
 begin
   if (UpdateKind = rsInserted) and (E is EFDDBEngineException) and (EFDDBEngineException(E).Kind = ekUKViolated) then begin
     DataSet.FieldByName('ID').AsInteger := GetNextFreeID;
     Action := raCorrect;
   end;
 end;

Siehe auch