Les formules ne sont pas évaluées "à la demande" ou appelées (autrement dit, une formule donnée ne peut pas appeler une autre formule pour effectuer un traitement particulier, même par le biais de variables globales).
Par exemple :
Rem Formule ImprimerCarré Global x () As Number x = 5 formula = "Le carré de" & CStr(x,0) & " est " & ToText ({@square mailto:{@square}, 0) & “.” Rem Formule Carré Global x () As Number formula = x * x
En utilisant la formule ImprimerCarré dans un état, vous obtenez :
Le carré de 5 est 0.
Dans cet exemple, la formule ImprimerCarré utilise la formule Carré ; Crystal Reports doit donc ordonner l'évaluation des deux formules. La formule Carré est évaluée avant la formule ImprimerCarré. Lorsque la formule Carré est évaluée, la variable globale x a pour valeur 0 puisqu'il s'agit d'une variable numérique non initialisée.
Les fonctions personnalisées sont au contraire évaluées à la demande ou appelées. Utilisons une fonction personnalisée dans l'exemple précédent :
Rem Formule ImprimerCarré formula = "Le carré de" & CStr(5,0) & "est" & CStr(cf9Square (5),0) + “.” Rem Fonction personnalisée cf9Square Function cf9Square (x As Number) cf9Square = x * x End Function
Si vous utilisez la formule ImprimerCarré dans votre état, vous obtenez :
Le carré de 5 est 25.
Création des fonctions personnalisées | Syntaxe Basic des fonctions personnalisées | Syntaxe Crystal des fonctions personnalisées