Boucle imbriquée

Résolu/Fermé
7aentete - 2 janv. 2012 à 15:02
 7aentete - 3 janv. 2012 à 08:19
Bonjour,
J'ai dans une base de donnes des numeros sous la forme 9999/001 et 999 (sans barre de fraction. Je souhaite trouver la position de la barre quand il y en une.

ma boucle :
dim x as number
dim prog as string
x=1
do
if isnumeric(left({T_EQUIPMENT.EREQ_CODE}, x)) then
x=x+1
else
formula = x
prog = "fin"

end if
loop while prog <> "fin"

cela marche quand il y uniquement des numéros avec barre de fraction mais plante ( nombre de boucle maxi dépassée) avec des numéros sans barre.

comment puis-je éviter ce pb ?

merci d'avance


1 réponse

pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 754
2 janv. 2012 à 16:34
Bonjour,
Vous avez peut être à votre disposition l'instruction Instr qui renvoie la position de la première occurrence d'une chaîne dans une autre chaîne. Dans votre cas :
Instr("9999/001", "/") renvoie 5
Instr("99999", "/") renvoie 0
Donc, pas besoin de boucle...

Sinon, il faut changer votre sortie de boucle. Loop While prog <> "fin" est infini, le programme ne trouvant que des valeurs numériques...
Vous pouvez tester, par exemple :
Loop While x <= Len(T_EQUIPMENT.EREQ_CODE)
(tant que x est inférieur ou égal au nombre de caractères du code...)
0
merci pour cette réponse, instr fonctionne parfaitement et c'est beaucoup plus simple.

merci encore
0