Spécification de valeurs par défaut (FireDAC)

De RAD Studio
Aller à : navigation, rechercher

Remonter à Modification des données (FireDAC)

Utilisation du gestionnaire d'événement OnNewRecord

Dans Delphi, la méthode standard d'assignation de valeurs par défaut aux champs d'un nouvel enregistrement consiste à utiliser le gestionnaire d'événement OnNewRecord. Ce gestionnaire d'événement est déclenché après l'obtention des valeurs des champs auto-incrémentés et de liaison des enregistrements, et après l'assignation de valeurs automatiques par défaut. Le gestionnaire d'événement peut redéfinir les valeurs ci-dessus ou assigner des valeurs initiales en utilisant une logique personnalisée complexe.

Le gestionnaire d'événement peut être assigné à l'ensemble de données à tout moment.

Spécification de la valeur par défaut d'une expression

FireDAC vous autorise à assigner une expression à la propriété TField.DefaultExpression. Cette expression est évaluée une fois dans le cadre de l'appel de la méthode Insert / Append et assignée en tant que valeur initiale au champ correspondant. Cette valeur peut être redéfinie ultérieurement par l'application. Lorsqu'un champ a TField.FieldKind = fkInternalCalc, l'expression par défaut (DefaultExpression) est utilisée pour calculer la valeur du champ.

Si une valeur est assignée à un champ DefaultExpression lorsqu'un ensemble de données est fermé, l'actualisation est automatique. Lorsqu'un ensemble de données est ouvert, appelez la méthode UpdateAttributes pour actualiser les modifications. Par exemple :

FDQuery1.Open;
...
FDQuery1.FieldByName('ObjGUID').DefaultExpression := 'NEWGUID()';
FDQuery1.UpdateAttributes;

FireDAC n'extrait pas automatiquement les expressions par défaut de la colonne à partir du dictionnaire de base de données. Le moyen le plus simple d'assigner une expression consiste à utiliser l'éditeur de champs à la conception :

FieldsEditorAssignExpr.png

Actualisation de la valeur par défaut

FireDAC reconnaît automatiquement une colonne d'ensemble de résultats comportant une valeur par défaut dans les SGBD suivants :

SGBD Description
Firebird fiMeta se trouve dans FetchOptions.Items et ExtendedMetadata vaut True.
InterBase fiMeta se trouve dans FetchOptions.Items et ExtendedMetadata vaut True.
MySQL
PostgreSQL fiMeta se trouve dans FetchOptions.Items et ExtendedMetadata vaut True.
Base de données Teradata fiMeta se trouve dans FetchOptions.Items et ExtendedMetadata vaut True.


Lorsque FireDAC reconnaît une colonne comportant une valeur par défaut, TField.AutoGenerateValue est défini sur arDefault. Si cela ne se produit pas, alors AutoGenerateValue peut être défini manuellement. Si la valeur d'un champ correspondant n'a pas été assignée lors de l'ajout d'un nouvel enregistrement, FireDAC actualise automatiquement la valeur du champ après la validation du nouvel enregistrement.