IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP Discussion :

Problème avec Do while rs.EOF


Sujet :

ASP

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    15
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 15
    Par défaut Problème avec Do while rs.EOF
    Je fait un select dans une table qui est vide pour le moment.
    Dans le code, je fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    Do While Not rsAntigerm.EOF 
      date_antigerm1 = rsAntigerm(0)
      prod_antigerm1 = rsAntigerm(1)
      dose_antigerm1 = rsAntigerm(2)
      mode_antigerm1 = rsAntigerm(3)
      Response.write(" anti : " & date_antigerm1)
      Response.flush 'ca c est pour débuguer
       %>
       <tr> 
         <td width="12%"><%=date_antigerm1%> </td>
         <td width="26%"><%=prod_antigerm1%> </td>
         <td width="7%"><%=dose_antigerm1%> </td>
         <td width="55%"><%=mode_antigerm1%> </td>
      </tr>
      <%
      rsAntigerm.movenext
    Loop
    Et pourtant à l'exécution j'obtiens en source de page HTML :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
     anti : 
      <tr> 
        <td width="12%"> </td>
        <td width="26%"> </td>
        <td width="7%"> </td>
        <td width="55%"> </td>
       </tr>
     anti : 
       <tr> 
          <td width="12%"> </td>
          <td width="26%"> </td>
          <td width="7%"> </td>
          <td width="55%"> </td>
       </tr>
    Et ce à l'infini !!! Comme si il ne trouvais jamais rsAntigerm.EOF ???

    Pour le coup, je ne comprend plus rien.
    Puisque ma table est vide, mon RS est forcément à EOF, donc je ne devrait pas exécuter ce qui est dans le "Do while .... loop" !!!!
    Et pourtant, il le fait ??? C'est à devenir fou ce truc !!!
    Quelqu'un aurait une idée ??

  2. #2
    Membre émérite
    Avatar de jérôme
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    591
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 591
    Par défaut
    T'es sûr qu'elle ne renvoie rien ta requête ? Tu l'as testé dans access (ou ton sgbd) ?
    Teste aussi BOF en + de EOF

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    15
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 15
    Par défaut
    Oui je suis sure qu'elle ne renvoit rien, j'ai fait un response.write de la requête construite que j'ai copié/collé dans le client qui me permet d'administrer ma base mySql, résultat : "EMPTY".
    Donc, tout va bien de ce coté là.

    Pour tester le BOF, je fais un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    if RS.BOF then
      do while not RS.EOF
         .....
      loop
    end if
    ????

  4. #4
    Membre émérite
    Avatar de jérôme
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    591
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 591
    Par défaut
    Non, tu testes si tu n'es pas au début de ton recordset (en fait avant) ou à la fin (en fait après)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
      do while not RS.EOF and not rs.bof
         .....
      loop

  5. #5
    Membre averti
    Inscrit en
    Avril 2004
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 59
    Par défaut
    Bonjour !
    Ecoute essaye d'ajouter avant le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Do While Not rsAntigerm.EOF
    ce code la:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if Not rsAntigerm.EOF then
              rsAntigerm.movefirst
    et essaye avec ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rsAntigerm("date_antigerm1")
    et non pas ca essaye aussi de verifier ta table parce que apparement t'as deux enregistrement present sur cette table

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    15
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 15
    Par défaut
    Bon, Jérôme, j'ai testé ton truc : pas de changement.

    Soufienne : Pour le coup du " If not rs.EOF" a mettre avant le "Do while" j'avais déjà testé et cela n'a rien changé.

    j'ai déjà vérifié la table, elle est bel et bien vide (et cela ne met pas seulement 2 fois le code, mais une infinité, en fait jusqu'à ce que le script finisse par planter avec un délai d'exécution dépassé).

  7. #7
    Membre émérite
    Avatar de jérôme
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    591
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 591
    Par défaut
    Tu es sûr que ton recordset est vide ? Je veux dire par là que tu viens de le créer et de le remplir, que tu ne réutilises pas un rs déjà créé.

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    15
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 15
    Par défaut
    Oui, c'est d'ailleurs aussi pour ça que je leur donne des noms différents à mes recordset. comme ça, je sais ce qu'ils contiennent et pas de soucis de recordset déjà utilisés dans la page et pas initialisés.

  9. #9
    Membre averti
    Inscrit en
    Avril 2004
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 59
    Par défaut
    ecoute essaye de juste recuperer la valeur de retour du rs.eof
    (cad
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    rs=conn.execute("requete")
     response.write(rs.eof)
    et ne met rien apres)

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 16
    Par défaut
    Salut,

    As-tu vérifié l'intégrité de tes tables. Il se pourrait (hypothèses) qu'un defaut d'une de ta table crée une sorte de redondance.
    Tente un truc du genre

    Conn.Execute("CREATE TEMPORARY TABLE 'temporaire'....;INSERT INTO temporaire SELECT * FROM ta_table;")
    (Sous MySQL) mais doit fonctionner ailleurs que sous access.
    Ensuite tu map ton code sur ta table temporaire et tu retente.

  11. #11
    Membre averti
    Inscrit en
    Mars 2003
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 44
    Par défaut
    Citation Envoyé par jérôme
    Non, tu testes si tu n'es pas au début de ton recordset (en fait avant) ou à la fin (en fait après)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
      do while not RS.EOF and not rs.bof
         .....
      loop
    Je me permet de m'incruster.

    Une question vraiment trop bête mais je n'ai jamais trouvé de réponse :
    Pourquoi préférer "Do while ... loop" par rapport à "While ... wend" ?

    Merci.

    (fin du H.S. )

  12. #12
    Membre confirmé Avatar de David.V
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    191
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2004
    Messages : 191
    Par défaut
    Lauraned > Donnes d'avantage de code STP, en particulier ce qui vient avant la boucle (requête,...), ça nous permettra d'y voir plus clair !

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    15
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 15
    Par défaut
    heu en fait j'ai oublié de le dire, pasque j'ai eut trop de taff, mais tout remarche ?? Sans rien changer ???
    Ca me fera devenir chèvre un jour l'ASP ....

    Merci de m'avoir soutenue en tout cas.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème avec un while if et else
    Par niepoc dans le forum Général Python
    Réponses: 10
    Dernier message: 22/06/2009, 16h37
  2. [FPDF] Problème avec un while dans un tableau
    Par nigg4z dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 11/10/2007, 15h13
  3. [MySQL] Problème avec un "while"
    Par fantasygirl dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 23/08/2007, 02h09
  4. Réponses: 2
    Dernier message: 17/10/2005, 22h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo