Crystal Reports  

Eviter les boucles infinies (syntaxe Basic)

Il existe un mécanisme de sécurité pour éviter le blocage du traitement d'un état à cause d'une boucle infinie. Pour chaque évaluation de formule, le nombre maximum d'évaluations de condition de boucle est de 100 000. Par exemple :

Dim i
i = 1
Do While i <= 200000
   If i > {movie.STARS} Then Exit Do
   i = i + 1
Loop
formula = 20

Si {movie.STARS} est supérieur à 100 000, la condition de boucle (i <= 200000) sera évaluée un plus grand nombre de fois que le maximum autorisé et un message d'erreur s'affichera. Sinon la boucle est correcte.

Remarque   Le mécanisme de sécurité s'applique au niveau de la formule, et non pour chaque boucle individuelle. Par exemple :
Dim i
i = 1
For i = 1 To 40000
   formula = Sin (i)
Next i
Do While i <= 70000
   i = i + 1
Loop

La formule ci-dessus déclenche aussi le mécanisme de sécurité puisque le nombre de 100 000 fait référence au nombre total d'évaluations de condition de boucle de la formule et cette formule comportera 40001 +70001 évaluations de ce type.

Voir aussi

Boucles For/Next | Boucles Do | Boucles While