FireDAC.Comp.DataSet.TFDDataSet.OnUpdateRecord

Aus RAD Studio API Documentation
Wechseln zu: Navigation, Suche

Delphi

property OnUpdateRecord: TFDUpdateRecordEvent read FOnUpdateRecord  write FOnUpdateRecord;

C++

__property TFDUpdateRecordEvent OnUpdateRecord = {read=FOnUpdateRecord, write=FOnUpdateRecord};

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 Datensatzaktualisierung in eine Datenbank eingetragen wird.

Mit einer OnUpdateRecord-Ereignisbehandlungsroutine verarbeiten Sie sofortige oder zwischengespeicherte Aktualisierungen, deren Behandlung problematisch ist:

Dieses Ereignis eignet sich besonders für Anwendungen für die Folgendes erforderlich ist:

  • Zusätzliche Steuerungsmöglichkeiten für die Parameter- und Makrosubstitution in Aktualisierungskomponenten.
  • Mehrfach-Aktualisierungen von SQL-Anweisungen, wenn das DBMS keine Stapel oder Blöcke unterstützt.
  • Eintragen von Nicht-SQL-Aktualisierungen.

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

ARequest gibt an, ob es sich bei der aktuellen Aktualisierung um das Einfügen, Löschen oder Ändern eines Datensatzes handelt.

AAction gibt die Aktion an, die von der Ereignisbehandlungsroutine OnUpdateRecord beim Beenden durchgeführt wird. Beim Eintritt in die Routine wird AAction immer auf eaDefault gesetzt. Wenn OnUpdateRecord erfolgreich ausgeführt wurde, sollte AAction vor dem Beenden auf eaApplied gesetzt werden.

AAction-Wert

Beschreibung

eaFail

Kennzeichnet die Aktualisierung als fehlgeschlagen und gibt einen Fehler zurück

eaSkip

Überspringt die aktuelle Aktualisierung und kennzeichnet sie nicht als eingetragen.

eaRetry

Versucht, die aktuelle Operation erneut auszuführen.

eaApplied

Kennzeichnet die aktuelle Aktualisierung als eingetragen.

eaDefault

Übernimmt die Standardaktion. Bei einer erfolgreichen Aktualisierung lautet der Wert eaApplied und bei einer fehlgeschlagenen Aktualisierung eaFail.

eaExitSuccess

Beendet die Verarbeitung der zwischengespeicherten Aktualisierungen und gibt eine Erfolgsmeldung zurück.

eaExitFailure

Beendet die Verarbeitung der zwischengespeicherten Aktualisierungen und gibt eine Fehlermeldung zurück.

Im Code der OnUpdateRecord-Ereignisbehandlungsroutine sollte der Datenmengenfeldwert, einschließlich von NewValue, OldValue und CurValue, gelesen werden.

  • NewValue ist der neue Feldwert vor dem Eintragen der Aktualisierungen.
  • OldValue ist der ursprüngliche Feldwert nach dem Abrufen des Datensatzes oder nach dem Eintragen der letzten Aktualisierungen.
  • CurValue ist der aktuelle Feldwert, derselbe Wert wie der der Eigenschaft Value.

Hinweis: Im Code der Ereignisbehandlungsroutine OnUpdateRecord dürfen keine Methoden aufgerufen werden, die die Position des aktuellen Datensatzes ändern.

Beispiel

 
 procedure TForm1.FDQuery1UpdateRecord(ASender: TDataSet; ARequest: TFDUpdateRequest;
  var AAction: TFDErrorAction; AOptions: TFDUpdateRowOptions);
 begin
   if ARequest = arInsert then begin
     // set the SQL command to insert new record
     FDQuery2.SQL := 'insert into mytab (id, code, name) values (:id, :code, :name) returning tmstamp into :ts';
 
     // set parameter values
     FDQuery2.Params[0].Value := ASender['id'];
     FDQuery2.Params[1].Value := ASender['code'];
     FDQuery2.Params[2].Value := ASender['name'];
 
     // specially define TS parameter
     FDQuery2.Params[3].DataType := ftDateTime;
     FDQuery2.Params[3].ParamType := ptOutput;
 
     // insert new record
     FDQuery2.ExecSQL;
 
     // move TS output parameter value back to dataset
     ASender['tmstamp'] := FDQuery2.Params[3].Value;
 
     // return 'Ok' status
     AAction := eaApplied;
   end;
 end;

Siehe auch

Beispiele