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 types différents.
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 la page Formules, les noms des fonctions intégrées, des opérateurs et autres mots clés sont mis en surbrillance à l'aide de couleurs différentes. 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. Par exemple, vous pouvez souhaiter lui affecter une valeur initiale :
Local NumberVar x; //Declare x to be a Number variable
x := 10; //Assign the value of 10 to 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 := "hello";
//OK- the Length function expects a String argument
Length (y);
//Error- y can only hold String values
y := #Jan 5, 1993#;
//Error- y can only hold String values
y := ["a", "bb", "ccc"];
//Error- the Sin function expects a Number argument
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 := "Hello" + " " + "World";
Local DateVar z := CDate (#Sept 20, 1999#);
Local NumberVar Range gradeA := 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 de plage :
Local NumberVar Range gradeA;
Local DateVar Range quarter;
gradeA := 90 To 100;
quarter := CDate (1999, 10, 1) To CDate (1999, 12, 31);