Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Salut les ptit clous....
J'ai un petit souci sur PB7...
J'ai du code type:
DO UNTIL ls_retour = fs_string1
Suivant l'environement il se peut que l'égalité Null = Null ne soit pas reconue, et donc je rentre dans une boucle sans fin...
Apparement les deux environement ont les dll pbdwe70.dll et pbvm70.dll qui sont différent (date)
Avez vous déjà eu ce genre de souci???
Dernière modification par Pilou007 (07-03-2008 16:44:53)
Hors ligne
Bonjour,
Il me semble que ce genre de test ne retourne ni TRUE, ni FALSE, mais Null.
Une seule solution: Utiliser la fonction Isnull pour éviter ce genre de désagréments.
Hors ligne
remplacer tes valeurs nulles par une valeur syntaxique...
genre
if isnull(ls_retour) then ls_retour = '@@@pbadonf' end if if isnull(fs_string1) then fs_string1 = '@@@pbadonf' end if
Hors ligne
Salut
merci pour vos réponse, mais comme je vous l'ai dit, cela fonctionne suivant l'environement dans lequel je me trouve, et je ne peux pas utiliser la fonction IsNull() car parfois je compare aussi autre chose et de toute façon, je doit comparer deux variables....
Par contre lorsque les deux variables sont null, je ne souhaite rentrer dans ma boucle....
Bye
Hors ligne
ca veut dire quoi ? la fonction standard isnull() de pb ne fonctionne pas suivant ton environnement de travail ?
Hors ligne
Pilou007 a écrit:
Par contre lorsque les deux variables sont null, je ne souhaite rentrer dans ma boucle....
IF NOT ( isnull(ls_retour) AND isnull(fs_string1) ) THEN DO UNTIL ls_retour = fs_string1 // Blabla... LOOP END IF
Hors ligne
Pilou007 a écrit:
Salut
merci pour vos réponse, mais comme je vous l'ai dit, cela fonctionne suivant l'environement dans lequel je me trouve, et je ne peux pas utiliser la fonction IsNull() car parfois je compare aussi autre chose et de toute façon, je doit comparer deux variables....
Par contre lorsque les deux variables sont null, je ne souhaite rentrer dans ma boucle....
Bye
La fonction isnull() retourne vrai si la valeur est null est faux sinon.
Donc faire comme mes petits camarades t'ont dit est la solution à ton problème.
Si tu ne veux pas toucher à la valeur de tes variables, tu peux écrire :
DO UNTIL (ls_retour = fs_string1) or (isnull(ls_retour) and isnull(fs_string1)) LOOP
Hors ligne
foon a écrit:
Pilou007 a écrit:
Par contre lorsque les deux variables sont null, je ne souhaite rentrer dans ma boucle....
Code: pb
IF NOT ( isnull(ls_retour) AND isnull(fs_string1) ) THEN DO UNTIL ls_retour = fs_string1 // Blabla... LOOP END IF
Psssstt foon. C'est vendredi ! Mais quand même !
Elle fait quoi sa boucle si dans "blabla" les 2 variables deviennent null ?
Hors ligne
Je répondais juste pour l'entrée dans la boucle, pas pour en sortir.
Pour éviter le cas on peut rajouter un
IF ( isnull(ls_retour) AND isnull(fs_string1) ) THEN EXIT
en fin de boucle et zou, c'est réglé...
Mais il est vrai qu'il vaut mieux faire comme tu dis: c'est beaucoup plus propre.
Hors ligne
Effectivement c'est dans ma boucle que les variable sont modifées.....
Toujours est-il que mon problème est un problème d'environnement:
sur un environement j'ai les dll pbvm70.dll et pbdwe70.dll qui ne sont pas à la même date.....
Apparement il va falloir que je choisisse celles qui fonctionnent avec ma boucle....
Merci
@+
Hors ligne
Non je n'ai pas les dates, je travaille sur le projet depuis deux mois seulement et c'est l'équipe déployement qui gère cela....
je n'ai fais que découvrir d'ou le problème venait...
Bref c'est juste si quelqu'un avait déjà eu le souci....
En tout cas merci pour tout
je clos le sujet.
@+
Hors ligne