L'expression If est l'une des structures de contrôle les plus utiles. Elle vous permet d'évaluer une expression si une condition est vraie et d'évaluer une expression différente dans le cas contraire.
Remarque : La syntaxe Crystal correcte pour l'instruction If est if <condition> then <then> else <else>, <condition>, <then> et <else> étant des expressions uniques. Si vous avez plusieurs expressions après <then> ou <else>, convertissez-les en expressions uniques en les insérant entre parenthèses. Par exemple :
Global stringVar lastValue;
if {Branch_View.Branch_ID} = lastValue
then
(lastValue := {Branch_View.Branch_ID};
crRed;)
else
(lastValue := {Branch_View.Branch_ID};
crBlack;)
Remarque :
Lorsque vous procédez à une mise en forme à l'aide de formules conditionnelles, incluez systématiquement le mot clé Else. Les valeurs ne remplissant pas la condition If risquent sinon de perdre leur mise en forme initiale. Pour éviter cela, utilisez la fonction DefaultAttribute (If...Else DefaultAttribute).
Lorsque vous créez des formules de sélection d'enregistrements comprenant des expressions If, incluez systématiquement le mot clé Else, sans quoi il se peut qu'aucun enregistrement ne soit renvoyé ou que des enregistrements inattendus soient renvoyés. Par exemple, une sélection d'enregistrements telle que If {champ de paramètre} = "inférieur à 100" then {champ} < 100" est évaluée comme False (faux) et ne renvoie aucun enregistrement. Pour remédier à ce problème, complétez la formule avec Else True.
Exemple
Une société envisage de payer une prime de 4 % à ses employés, à l'exception de ceux travaillant au service des ventes qui recevront une prime de 6 %. Ceci sera effectué par la formule suivante à l'aide d'une expression If :
//If example 1
If {Employee.Dept} = "Sales" Then
{Employee.Salary} * 0.06
Else
{Employee.Salary} * 0.04
Dans cet exemple, si la condition {Employés.Poste occupé} = "Ventes" est évaluée comme vraie, alors
{Employee.Salary} * 0.06
l'expression est traitée. Sinon, l'expression qui suit la clause Else, c'est-à-dire
{Employee.Salary} * 0.04
est traitée.
Supposons qu'une autre société ait l'intention d'accorder une prime de 4 % à ses employés et que cette prime ne puisse pas être inférieure à 1 000 €. L'exemple suivant illustre ce scénario. Remarquez que la clause Else n'est pas incluse ; elle est facultative et n'est pas nécessaire dans ce cas.
//If example 2
Local CurrencyVar bonus := {Employee.Salary} * 0.04;
If bonus < 1000 Then
bonus := 1000;
//The final expression is just the variable 'bonus'.
//This returns the value of the variable and is the
//result of the formula
bonus
Une autre façon d'effectuer l'exemple 2 consiste à utiliser une clause Else :
//If example 3
Local CurrencyVar bonus := {Employee.Salary} * 0.04;
If bonus < 1000 Then
1000
Else
bonus
Supposons maintenant que la société précédente veuille également que la prime soit au maximum égale à 5 000 €. Vous devez alors utiliser une clause Else If. L'exemple suivant comporte seulement une clause Else If, mais vous pouvez en ajouter autant qu'il en faut. Notez qu'il faut cependant une clause Else au maximum pour chaque expression If. La clause Else est exécutée si aucune des expressions If ou Else If n'est vraie.
//If example 4
Local CurrencyVar bonus := {Employee.Salary} * 0.04;
If bonus < 1000 Then
1000
Else If bonus > 5000 Then
5000
Else
bonus