Champs calculés

De RAD Studio
Aller à : navigation, rechercher

Remonter à Compréhension des ensembles de données - Index


En utilisant l'éditeur de champs, vous pouvez définir des champs calculés pour vos ensembles de données. Quand un ensemble de données contient des champs calculés, vous fournissez le code calculant les valeurs de ces champs dans un gestionnaire d'événement DB.OnCalcFields.

La propriété AutoCalcFields détermine quand OnCalcFields est appelé. Si AutoCalcFields vaut True, OnCalcFields est appelé quand :

  • Un ensemble de données est ouvert.
  • L'ensemble de données passe en mode édition.
  • Un enregistrement est récupéré dans la base de données.
  • La focalisation se déplace d'un composant visuel à un autre, ou bien d'une colonne à une autre dans un contrôle grille orienté données et l'enregistrement en cours a été modifié.

Si AutoCalcFields vaut False, OnCalcFields n'est pas appelé quand on modifie individuellement des champs se trouvant à l'intérieur d'un enregistrement (la quatrième condition ci-dessus).

Avertissement :  Comme OnCalcFields est fréquemment appelé, l'exécution du code que vous écrivez pour ce gestionnaire doit être brève. En outre, si AutoCalcFields vaut True, OnCalcFields ne doit accomplir aucune action qui modifie l'ensemble de données (ou l'ensemble de données lié s'il fait partie d'une relation maître-détail), car cela induit une récursion. Par exemple, si OnCalcFields exécute Post, et que AutoCalcFields vaut True, OnCalcFields est à nouveau appelé, provoquant un nouvel appel à Post, etc.

Quand OnCalcFields s'exécute, l'ensemble de données passe en mode dsCalcFields. Cet état empêche les modifications et les ajouts dans les enregistrements sauf s'ils s'appliquent aux champs calculés modifiés par le gestionnaire lui-même. La raison qui empêche d'autres modifications est que OnCalcFields utilise les valeurs des autres champs pour dériver celles des champs calculés. Sinon, les changements des autres champs pourraient invalider les valeurs affectées aux champs calculés. L'exécution de OnCalcFields achevée, l'ensemble de données revient à l'état dsBrowse.

Voir aussi