FireDAC.Comp.DataSet.TFDDataSet.OnUpdateRecord

De RAD Studio API Documentation
Aller à : navigation, rechercher

Delphi

property OnUpdateRecord: TFDUpdateRecordEvent read FOnUpdateRecord  write FOnUpdateRecord;

C++

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

Propriétés

Type Visibilité  Source Unité  Parent
event public
FireDAC.Comp.DataSet.pas
FireDAC.Comp.DataSet.hpp
FireDAC.Comp.DataSet TFDDataSet


Description

Se produit quand une mise à jour d'enregistrement est appliquée à une base de données.

Utilisez un gestionnaire d'événement OnUpdateRecord pour traiter des mises à jour immédiates ou en cache qui ne peuvent pas être correctement ou facilement gérées :

Cet événement est utile pour les applications qui nécessitent :

  • Un contrôle supplémentaire sur les paramètres et la substitution de macros dans les composants de mise à jour.
  • Des mises à jour d'instructions multi-SQL, quand le SGBD ne supporte pas les lots ou les blocs.
  • La validation des mises à jour non-SQL.

ASender est l'ensemble de données auquel les mises à jour sont appliquées. 

ARequest indique si la mise à jour en cours est l'insertion, la suppression ou la modification d'un enregistrement. 

AAction indique l'action prise par le gestionnaire d'événement OnUpdateRecord avant qu'il ne se termine. Dès l'entrée dans le gestionnaire, AAction est toujours défini sur eaDefault. Si OnUpdateRecord a réussi, il doit définir AAction sur eaApplied avant qu'il ne se termine

Valeur AAction 

Description 

eaFail

Marque la mise à jour comme étant en échec et renvoie une erreur. 

eaSkip 

Ignore la mise à jour en cours et ne la marque pas comme appliquée. 

eaRetry

Recommence l'opération en cours. 

eaApplied 

Marque la mise à jour en cours comme appliquée. 

eaDefault 

Prend l'action par défaut. Pour une mise à jour réussie, c'est eaApplied, alors que pour une mise à jour en échec, c'est eaFail

eaExitSuccess 

Arrête le traitement des mises à jour en cache, renvoie un message de succès. 

eaExitFailure 

Arrête le traitement des mises à jour en cache, renvoie un message d'échec. 

Le code du gestionnaire d'événement OnUpdateRecord doit lire les valeurs des champs d'ensembles de données, notamment NewValue, OldValue et CurValue.

  • NewValue est la nouvelle valeur du champ, comme avant la validation des mises à jour.
  • OldValue est la valeur d'origine du champ, comme après la récupération de l'enregistrement ou après l'application des dernières mises à jour.
  • CurValue est la valeur en cours du champ, la même que la propriété Value.

Remarque : Le code du gestionnaire d'événement OnUpdateRecord ne doit pas appeler les méthodes qui changent la position en cours dans l'ensemble de données.

Exemple

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;

Voir aussi

Exemples