Avant d'utiliser une variable dans une formule, vous devez la déclarer. Une variable peut contenir des valeurs d'un type donné. Les types autorisés sont les sept types simples (Nombre, Devise, Chaîne, Booléen, Date, Heure et Date/heure), les six types de plages (Plage de nombres, Plage de devises, Plage de chaînes, Plage de dates, Plage d'heures et plage de valeurs de type date/heure) et les variables contenant des tableaux des types déjà mentionnés. En tout, une variable peut donc avoir 26 différents types.
Lorsque vous déclarez une variable, vous spécifiez également son nom. Une variable ne peut pas avoir le même nom qu'une fonction, un opérateur ou un autre mot clé valable de la syntaxe Crystal. Par exemple, votre variable ne peut pas être nommée Sin, Mod ou If car Sin est une fonction intégrée, Mod est un opérateur intégré et If est un mot clé intégré. Lorsque vous saisissez des formules dans l'Editeur de formule, le nom des fonctions, opérateurs et autres mots clés intégrés est mis en évidence à l'aide de couleurs différentes et il est ainsi facile de repérer l'existence de conflits avec les noms de variables.
Une fois déclarée, une variable peut être utilisée dans la formule. Vous pouvez, par exemple, souhaiter lui affecter une valeur initiale :
Local NumberVar x; //Déclarer x en tant que variable numérique x := 10; //Affecter la valeur 10 à x
Remarque Le mot clé pour déclarer la variable numérique se termine par Var. Ceci s'applique à tous les types de variable de la syntaxe Crystal.
Les valeurs contenues dans une variable ne peuvent être que d'un seul type. Si, par exemple, une variable contient une valeur numérique, vous ne pouvez pas l'utiliser plus tard pour contenir une chaîne.
Exemple
Local StringVar y; y := "bonjour"; //OK- la fonction Length attend un argument de type chaîne Length (y); //Erreur- y peut uniquement contenir des valeurs de type chaîne y := #Jan 5, 1993#; //Erreur- y peut uniquement contenir des valeurs de type chaîne y := ["a", "bb", "ccc"]; //Erreur- la fonction Sin attend un argument numérique Sin (y);
Vous pouvez déclarer une variable et lui affecter une valeur dans une seule expression. Par exemple :
Local NumberVar x := 10 + 20; Local StringVar y := "Bonjour" + " " + "le monde"; Local DateVar z := CDate (#Sept 20, 1999#); Local NumberVar Range niveauA := 90 To 100;
C'est une bonne méthode car elle est plus efficace et permet d'éviter de faire l'erreur courante qui consiste à initialiser les variables de façon incorrecte.
Les exemples ci-dessous concernent la déclaration et l'initialisation de variables plages :
Local NumberVar Range niveauA; Local DateVar Range trimestre; niveauA := 90 To 100; trimestre := CDate (1999, 10, 1) To CDate (1999, 12, 31);