Boucle imbriquée
Résolu
7aentete
-
7aentete -
7aentete -
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
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
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...)
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...)
merci encore