Les boucles For/Next vous permettent d'évaluer une suite d'instructions un certain nombre de fois. Le fonctionnement n'est donc pas le même que pour les instructions If et Select que le programme rencontrera une fois pendant l'évaluation de la formule.
Les boucles For/Next sont préférables lorsque vous connaissez à l'avance combien de fois l'instruction doit être évaluée.
Exemple 1
Supposons que vous vouliez inverser la chaîne {Clients.Nom du client}. Par exemple, "Cyclistes urbains" devient "sniabru setsilcyC".
Rem Inverser une chaîne - version 1 formula = "" Dim strLen strLen = Len ({Clients.Nom du client}) Dim i For i = 1 To strLen Dim PosCar Poscar = strLen - i + 1 formula = formula & _ Mid({Clients.Nom du client}, PosCar, 1) Next i
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. A ce moment précis, son type de variable est le type numérique. 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 septième caractère de {Clients.Nom du client} est affecté à la formule de variable spéciale vide. La valeur de la formule est donc "r" après la première itération. Durant la seconde itération, le sixième caractère de {Clients.Nom du client} est ajouté à la formule et la formule est égale à "ru". Ceci continue jusqu'à la septième itération, pour laquelle formula est égale à "rup riA" qui correspond à 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.
Rem Inverser une chaîne - version 2 formula = "" Dim i For i = Len ({Clients.Nom du client}) To 1 Step -1 formula = formula + _ Mid({Clients.Nom du client}, i, 1) Next i
Exemple 3
La version la plus simple consiste à utiliser la fonction intégrée StrReverse :
Rem Inverser une chaîne - version 3 formula = 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/Next ou d'autres types de boucles. Cependant, les boucles For/Next offrent plus de souplesse et une meilleure efficacité pour le traitement des chaînes et des tableaux. Elles s'avèrent essentielles lorsque les fonctions intégrées ne couvrent pas l'application souhaitée.