1. Ce site utilise des cookies. En continuant à utiliser ce site, vous acceptez l'utilisation des cookies. En savoir plus.
  2. Bonjour tout le monde ! Veillez consulter la Politique de forum pour comprendre nos règles, Merci a vous !
    Rejeter la notice

Boucle TANTQUE dans une autre boucle TANTQUE

Discussion dans 'Windev Mobile' créé par fr85, Fev 19, 2021.

  1. fr85

    fr85 Member

    Inscrit:
    Mai 22, 2020
    Messages:
    123
    J'aime reçus:
    7
    Bonjour,

    Je rencontre actuellement un problème avec des boucles sur des requêtes SQL.

    Je cherche à faire une boucle TANTQUE au sein même d'une autre boucle TANTQUE.

    Le problème que je rencontre est que la première boucle TANTQUE s'arrête et ne continue pas après la parfaite éxécution dans son intégralité de la deuxième boucle TANTQUE

    Voici un exemple de code pour illustrer mon problème :

    [windev]i est un entier = 0
    requeteActualise est une chaîne ANSI = "SELECT * FROM entrees"

    SI MonAcces:mySQLExec(requeteActualise,0) ALORS
    TANTQUE MonAcces:mySQLFetch(0)

    // sur chaque ligne action à faire
    nSBat1 est un entier = MonAcces:mySQLLitColParNom("0", "id")

    rez est une chaîne ANSI = "SELECT * FROM plan WHERE semaine = '" + nSBat1 + "'"

    MonAcces:mySQLExec(rez,0)
    TANTQUE MonAcces:mySQLFetch(0)
    i++

    FIN

    FIN

    Info(i)
    SINON
    Erreur(MonAcces:mySQLGetErrorMessage())
    FIN[/windev]

    Est ce que la deuxième boucle TANTQUE, à la fin de son éxécution ne renverrait pas une FIN qui arrêterait donc la première boucle initiale ?

    Merci d'avance pour votre aide !
     
    Tags:
  2. popoy

    popoy Well-Known Member
    MEMBRE WX

    Inscrit:
    Fev 23, 2018
    Messages:
    2,879
    J'aime reçus:
    1,531
    Non seulement, il y a 2 tantque
    Mais il y a (j'ai l'impression) 2 requête
    Il serait préférable de morcelé les actions.
    Et pense à mettre des temporisation (multitâche)

    Les fonctions
    mySQLExec
    mySQLFetch
    mySQLGetErrorMessage
    Ne sont pas standard en wlangage
    Est tu sur qu'elles sont compatibles avec ton code SQL?

    Il n'y a pas de source de données
    Pas de connexion
    Utilise tu du php4wm ou un webservice pour la connexion MySQL.
    Rien de très clair pour windev mobile.
     
  3. fr85

    fr85 Member

    Inscrit:
    Mai 22, 2020
    Messages:
    123
    J'aime reçus:
    7

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    Non seulement, il y a 2 tantque
    Mais il y a (j'ai l'impression) 2 requête
    Il serait préférable de morcelé les actions.
    Et pense à mettre des temporisation (multitâche)

    Les fonctions
    mySQLExec
    mySQLFetch
    mySQLGetErrorMessage
    Ne sont pas standard en wlangage
    Est tu sur qu'elles sont compatibles avec ton code SQL?

    Il n'y a pas de source de données
    Pas de connexion
    Utilise tu du php4wm ou un webservice pour la connexion MySQL.
    Rien de très clair pour windev mobile.
    Cliquez pour agrandir...
    Je pense que c'est un problème de logique d'ordre d'éxécution de mes requêtes ;)

    Après longue réflexion, j'ai changé par une boucle TANTQUE avec stockage des données dans une variable tableau et ensuite j'utilise cette variable tableau dans une autre boucle POUR

    Je te rassure côté connexion et requête tout fonctionne grâce à PHP4WM

    Mais juste pour curiosité on ne peut pas faire deux boucles TANTQUE l'une dans l'autre ou bien ?
     
  • popoy

    popoy Well-Known Member
    MEMBRE WX

    Inscrit:
    Fev 23, 2018
    Messages:
    2,879
    J'aime reçus:
    1,531
    Pour PHP4WM , tu aurais du le préciser dès le début cela aurait été plus claire.
    ( je m'en doutais mais j'avais un doute)

    Pour les 2 TANTQUE, le mieux serait d'avoir la réponse du support pcsoft.

    Personnellement, j'évite sur mobile les requêtes imbriquées et les boucles imbriquées.

    Et quand je fais des actions pouvant être longue, j'ajoute des temporisation multitâche pour donner la main au système
    J'ai remarqué que la temporisation était souvent nécessaire.

    Pareil pour certains calcul , j'ai souvent besoin de morcelé celui-ci sinon il arrive qu'il y ait des divisions par 0
    Alors que dans mon calcul il n'y a pas de possibilité d'avoir 0
    C'est un problème que sur mobile et WM.
    Sur WD et d'autres langage je n'ai pas ce problème.
     
  • commun

    commun Active Member
    MEMBRE WX

    Inscrit:
    Jan 1, 2018
    Messages:
    225
    J'aime reçus:
    110
    tes deux boucles sont sur la même requête?
    tu as essayé de copier le résultat de ta requête dans une autre source de données et de faire la deuxième boucle avec l'autre source?
    ta deuxième boucle va jusqu’à la fin de ta requête, n'est ce pas ça qui arrête ta première qui attend aussi la fin des données?
     
  • fr85

    fr85 Member

    Inscrit:
    Mai 22, 2020
    Messages:
    123
    J'aime reçus:
    7

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    tes deux boucles sont sur la même requête?
    tu as essayé de copier le résultat de ta requête dans une autre source de données et de faire la deuxième boucle avec l'autre source?
    ta deuxième boucle va jusqu’à la fin de ta requête, n'est ce pas ça qui arrête ta première qui attend aussi la fin des données?
    Cliquez pour agrandir...
    Non il s'agit de deux requêtes différentes.

    C'est exactement ce que je pense, la deuxième requête va jusqu'a la fin et doit arrêter la première. Comment palier à ce genre de problème ?
     
  • popoy

    popoy Well-Known Member
    MEMBRE WX

    Inscrit:
    Fev 23, 2018
    Messages:
    2,879
    J'aime reçus:
    1,531
    Il faut trouver une alternative car wm n'accepte pas les requêtes imbriquées
     
  • fr85

    fr85 Member

    Inscrit:
    Mai 22, 2020
    Messages:
    123
    J'aime reçus:
    7
    Pour info :

    Selon le créateur de PHP4WX, il suffit de changer le numéro de requête et de mettre une fermeture de conexxion à la fin de la deuxième boucle.

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

     
  • Partager cette page

    Chargement...