Crystal Reports  

Boucles For (syntaxe Crystal)

Les boucles For vous permettent d'évaluer une suite d'expressions un certain nombre de fois. Le fonctionnement n'est donc pas le même que pour les expressions If et Select que le programme rencontrera au plus une fois pendant l'évaluation de la formule.

Les boucles For sont préférables lorsque vous connaissez à l'avance combien de fois l'expression doit être évaluée.

Syntaxe d'une boucle For

Exemple 1

Supposons que vous vouliez inverser la chaîne {Clients.Nom du client}. Par exemple, "Cyclistes urbains" devient "sniabru setsilcyC".

//Inverser une chaîne - version 1
Local StringVar str := "";
Local NumberVar strLen :=
   Length ({Clients.Nom du client});
Local NumberVar i;
For i := 1 To strLen Do
(
   Local NumberVar charPos := strLen - i + 1;
   str := str + {Clients.Nom du client}[charPos]
);
str

Observez le mode de fonctionnement de cette formule en supposant que la valeur actuelle du champ {Clients.Nom du client} soit "Air propre". La longueur de "Air propre" est assignée à la variable strLen, à savoir 10. Il s'agit d'une variable de comptage de boucle For car sa valeur change à chaque itération de la boucle For. En d'autres termes, elle est utilisée pour compter les itérations de la boucle. La boucle For va exécuter 7 itérations. La première fois, i est égal à 1, puis i est égal à 2, puis i est égal à 3, et ainsi de suite, jusqu'à ce que i soit égal à 7. Au cours de la première itération, le dixième caractère de {Clients.Nom du client} est affecté à la variable chaîne vide str. Ainsi, str est égal à "e" après la première itération. Au cours de la deuxième itération, le neuvième caractère de {Clients.Nom du client} est ajouté à str dont la valeur est désormais "er". Ceci continue jusqu'à la dixième itération après laquelle str est égal à, "erporp riA" qui est la chaîne inversée.

Exemple 2

Voici une version plus simple de la formule ci-dessus qui utilise une clause Step avec un pas négatif (step) égal à -1. Dans le cas de l'exemple de "Air propre", i est égal à 10 dans la première itération, à 9 dans la deuxième, à 8 dans la troisième, et ainsi de suite, jusqu'à ce que i soit égal à 1 dans la dernière itération.

//Inverser une chaîne - version 2
Local StringVar str := "";
Local NumberVar strLen :=
   Length ({Clients.Nom du client});
Local NumberVar i;
For i := strLen To 1 Step -1 Do
(
   str := str + {Clients.Nom du client}[i]
);
str

Exemple 3

La version la plus simple consiste à utiliser la fonction intégrée StrReverse :

//Inverser une chaîne - version 3
StrReverse ({Clients.Nom du client})

Les fonctions intégrées de chaîne dans Crystal Reports peuvent manipuler de nombreuses applications de traitement de chaîne qui le seraient habituellement au moyen de boucles For ou d'autres types de boucles. Cependant, les boucles For apportent la plus grande souplesse en matière de traitement des chaînes et également de la puissance dans le traitement des tableaux, ce qui peut s'avérer essentiel si les fonctions intégrées ne couvrent pas l'application envisagée.

Voir aussi

Exemple de boucle For | Sortie des boucles For