FireDAC.Comp.DataSet.TFDDataSet.OnUpdateRecord
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 :
- En utilisant la génération automatique FireDAC de commandes de mise à jour SQL.
- Par un composant adaptateur de table unique.
- Par un composant de mise à jour unique.
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 |
---|---|
|
Marque la mise à jour comme étant en échec et renvoie une erreur. |
|
Ignore la mise à jour en cours et ne la marque pas comme appliquée. |
|
Recommence l'opération en cours. |
|
Marque la mise à jour en cours comme appliquée. |
|
Prend l'action par défaut. Pour une mise à jour réussie, c'est |
|
Arrête le traitement des mises à jour en cache, renvoie un message de succès. |
|
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
- Redéfinition de la validation des mises à jour
- FireDAC.Comp.DataSet.TFDDataSet.ApplyUpdates
- FireDAC.Comp.DataSet.TFDDataSet.CachedUpdates
- FireDAC.Comp.DataSet.TFDDataSet.OnUpdateError
Exemples
- Exemple FireDAC TFDQuery OnUpdateRecord