Boucle imbriquée

Résolu
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

1 réponse

  1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    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
    1. 7aentete
       
      merci pour cette réponse, instr fonctionne parfaitement et c'est beaucoup plus simple.

      merci encore
      0