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, die Folgendes erfordern:

  • 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 eaApplied 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 Ereignisbehandlungsroutine OnUpdateRecord 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