FireDAC.Comp.DataSet.TFDDataSet.Constraints

De RAD Studio API Documentation
Aller à : navigation, rechercher

Delphi

property Constraints: TCheckConstraints read FConstraints write SetConstraints stored IsCS;

C++

__property Constraints = {stored=IsCS};

Propriétés

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


Description

Utilisez Constraints pour maintenir les contraintes de niveau enregistrement pour l'ensemble de données.

Les contraintes de niveau enregistrement imposent des règles métier en limitant uniquement quelques champs d'un même enregistrement. Les contraintes sont vérifiées à la fin de l'édition des données par le biais de la méthode Post, AppendRecord ou InsertRecord. Les contraintes qui limitent la valeur d'un champ unique peuvent être spécifiées par la propriété CustomConstraint ou ImportedConstraint.

Les contraintes ne sont appliquées que si elles sont définies avant l'ouverture de la table.

La vérification des contraintes est effectuée lorsque la propriété ConstraintsEnabled est définie sur True. Définissez la propriété ConstraintsEnabled sur False si l'application a besoin d'effectuer de larges mises à jour sur l'ensemble de données et si l'application peut garantir la cohérence des données. Vous pouvez revenir à la valeur d'origine après les mises à jour. Les contraintes ne sont pas vérifiées lors de la récupération des données.

Les expressions dans les contraintes doivent être des prédicats, qui sont évalués comme des valeurs booléennes. FireDAC supporte une syntaxe d'expressions compatible avec :

  • L'ensemble de données client ;
  • Oracle 8 (pas à 100 %).

Voir Ecriture d'expressions pour plus d'informations sur la syntaxe des expressions.

Exemple

with FDQuery1.Constraints.Add do begin
	CustomConstraint:='sal + bonus <= 2000';
	ErrorMessage:='The employee payments must be equal or less than 2000 usd';
end;
FDQuery1.ConstraintsEnabled:=true;

FDQuery1.Open();
	//open the query after the Constraints were defined
try
  FDQuery1.FieldByName('sal').AsFloat := 1800;
  FDQuery1.FieldByName('bonus').AsFloat := 300;
  FDQuery1.Post;
except
  FDQuery1.Cancel;
  Application.HandleException(Self);
end;

Voir aussi