Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Langages serveur > ASP
ASP Forum sur la programmation ASP. Avant de poster : Cours ASP, FAQ ASP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 15/01/2008, 13h38   #1
Membre du Club
 
Avatar de mattyeux
 
Étudiant
Inscription : décembre 2006
Messages : 167
Détails du profil
Informations personnelles :
Âge : 26

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : décembre 2006
Messages : 167
Points : 64
Points : 64
Par défaut problème incompréhensible de boucle

Ca fait quelques heures que je cherche a résoudre ce problème.

En gros, je requète sur une table, et j'affiche dans un tableau les résultats de la requète. C'est tout bête n'est ce pas ?

Voila ma boucle me permettant d'afficher les n lignes de mon tableau :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
<%For i=1 to oRS10.RecordCount%>
   <%If not oRS10.EOF and Not oRS10.BOF Then%>
    <% Response.Write("i : "&i&" - "&oRS10.RecordCount&"<br/>")%>
         <tr> 
	<%if lcase(trim(userIsGroupe("rcc")))=lcase(trim("ok")) Then%>
	   <td><%=oRS10.Fields("idDemande")%></td>
	<%end if%>
	<td><%=oRS10.Fields("idDemande")%></td>
	<td><%=oRS10.Fields("numGCR")%></td>
	<td><%=oRS10.Fields("descriptif")%></td>
	<td><%=oRS10.Fields("numWIC")%></td>
	<td><%=oRS10.Fields("maitrise")%></td>
	<td><%=oRS10.Fields("dateMepDOR")%></td>
          </tr>
	<%oRS10.movenext
    End If
Next%>
Et le <% Response.Write("i : "&i&" - "&oRS10.RecordCount&"<br/>")%>
m'affiche :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
i : 1 - 15
i : 9 - 15
i : 9 - 15
i : 9 - 15
i : 9 - 15
i : 9 - 15
i : 9 - 15
i : 9 - 15
i : 9 - 15
i : 9 - 15
i : 9 - 15 
i : 9 - 15
i : 9 - 15
i : 9 - 15
i : 9 - 15
Je comprend pas pourquoi ca fait ca ...

Cependant si je supprime de mon code la partie entre <tr> et </tr> :

Code :
1
2
3
4
5
6
<%For i=1 to oRS10.RecordCount%>
	<%If not oRS10.EOF and Not oRS10.BOF Then%>
		<% Response.Write("i : "&i&" - "&oRS10.RecordCount&"<br/>")%>
		<%oRS10.movenext
	End If
Next%>
J'ai un résultat cohérant :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
i : 1 - 15
i : 2 - 15
i : 3 - 15
i : 4 - 15
i : 5 - 15
i : 6 - 15
i : 7 - 15
i : 8 - 15
i : 9 - 15
i : 10 - 15
i : 11 - 15
i : 12 - 15
i : 13 - 15
i : 14 - 15
i : 15 - 15
Est ce que quelque pourrait m'expliquer l'incohérence de mon code ? Parce que la je ne vois pas ....

Merci

Matthieu
mattyeux est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/01/2008, 14h22   #2
Membre habitué
 
Inscription : janvier 2008
Messages : 117
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : janvier 2008
Messages : 117
Points : 130
Points : 130
Envoyer un message via MSN à trollinou
Salut

Je ne sais pas ce que tu as comme code HTML avant et après mais je pense que ça provient de là. Vérifie si les lignes et les colonnes ne se téléscope pas.

Autre chose si tu fais une boucle sur le nombre d'enregistrement, je ne vois pas trop l'utilité de vérifier si EOF ou BOF.
Fais l'un ou l'autre tu gagneras en lisibilité du code.
trollinou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/01/2008, 14h44   #3
Membre du Club
 
Avatar de mattyeux
 
Étudiant
Inscription : décembre 2006
Messages : 167
Détails du profil
Informations personnelles :
Âge : 26

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : décembre 2006
Messages : 167
Points : 64
Points : 64
Merci de ta réponse. Il n'y a pas grand chose avant et apres mon code :

Avant, il y a juste la requete et des lignes html permettant de définir les headers du tableau
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
<table>
    <tr> 
	<%if lcase(trim(userIsGroupe("rcc")))=lcase(trim("ok")) Then%>
		<th></th>
	<%end if%>
	<th>N°Demande</th>
	<th>N°GCR</th>
	<th>Descriptif</th>
	<th>N°WIC</th>
	<th>Maitrise</th>
	<th>Date de MEP</th>
    </tr>
...
Apres j'ai la fin du tableau : </table> et la deconnection a la base de données

J'ai supprimer petit a petit a petit tout ce que j'avais avant le code (donc les header) et le problème persiste ...
mattyeux est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/01/2008, 14h53   #4
Membre habitué
 
Inscription : janvier 2008
Messages : 117
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : janvier 2008
Messages : 117
Points : 130
Points : 130
Envoyer un message via MSN à trollinou
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
<%i = 1
	Do While Not oRS10.EOF
		Response.Write("i : "&i&" - "&oRS10.RecordCount)
%>
<tr> 
<br>
	<%if lcase(trim(userIsGroupe("rcc")))=lcase(trim("ok")) Then%>
	   <td><%=oRS10.Fields("idDemande")%></td>
	<%end if%>
	<td><%=oRS10.Fields("idDemande")%></td>
	<td><%=oRS10.Fields("numGCR")%></td>
	<td><%=oRS10.Fields("descriptif")%></td>
	<td><%=oRS10.Fields("numWIC")%></td>
	<td><%=oRS10.Fields("maitrise")%></td>
	<td><%=oRS10.Fields("dateMepDOR")%></td>
</tr>
	<%oRS10.movenext
			i = i + 1
    End If
Loop%>
Essaie ça mais vérifie la syntaxe pour la boucle, ça fait longtemps que j'en ai pas fait
trollinou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/01/2008, 15h05   #5
Membre du Club
 
Avatar de mattyeux
 
Étudiant
Inscription : décembre 2006
Messages : 167
Détails du profil
Informations personnelles :
Âge : 26

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : décembre 2006
Messages : 167
Points : 64
Points : 64
Encore merci
Malheuresement j'obtiens toujours :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
i : 1 - 15
i : 9 - 15
i : 9 - 15
i : 9 - 15
i : 9 - 15
i : 9 - 15
i : 9 - 15
i : 9 - 15
i : 9 - 15
i : 9 - 15
i : 9 - 15 
i : 9 - 15
i : 9 - 15
i : 9 - 15
i : 9 - 15
mattyeux est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/01/2008, 15h11   #6
Membre habitué
 
Inscription : janvier 2008
Messages : 117
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : janvier 2008
Messages : 117
Points : 130
Points : 130
Envoyer un message via MSN à trollinou
Alors essaie juste ça, tous le reste de ton code tu le met en commentaire :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 
<table>
<%i = 1
	Do While Not oRS10.EOF
%>
	<tr><td><%Response.Write("i : "&i&" - "&oRS10.RecordCount)%></td></tr>
<br>
	<tr>
	<%if lcase(trim(userIsGroupe("rcc")))=lcase(trim("ok")) Then%>
	   <td><%=oRS10.Fields("idDemande")%></td>
	<%end if%>
	<td><%=oRS10.Fields("idDemande")%></td>
	<td><%=oRS10.Fields("numGCR")%></td>
	<td><%=oRS10.Fields("descriptif")%></td>
	<td><%=oRS10.Fields("numWIC")%></td>
	<td><%=oRS10.Fields("maitrise")%></td>
	<td><%=oRS10.Fields("dateMepDOR")%></td>
</tr>
	<%oRS10.movenext
			i = i + 1
    End If
Loop%>
</table>
trollinou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/01/2008, 15h26   #7
Membre du Club
 
Avatar de mattyeux
 
Étudiant
Inscription : décembre 2006
Messages : 167
Détails du profil
Informations personnelles :
Âge : 26

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : décembre 2006
Messages : 167
Points : 64
Points : 64
Ok j'ai localisé le problème et résolu.

En effacant petit a petit toutes les lignes je me suis apercu que la fonction userIsGroupe() faisait appel aussi a une boucle utilisant une variable i qui se confondait avec la variable i utilisée dans la boucle d'affichage des lignes. Je pensais que cette variable resterait locale à la fonction et n'intéragissait pas avec le reste du programme (et je l'utilise très souvent sans avoir jamais rencontré ce problème).

Va falloir que j'étudie ca dans ASP.

En tout cas merci bcp trollinou, j'aurai mis beaucoup plus de temps tout seul.

mattyeux est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/01/2008, 15h29   #8
Membre habitué
 
Inscription : janvier 2008
Messages : 117
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : janvier 2008
Messages : 117
Points : 130
Points : 130
Envoyer un message via MSN à trollinou
Ce fut un plaisir !

Etudie la portée des variables, ça peut servir
trollinou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/01/2008, 15h48   #9
Membre du Club
 
Avatar de mattyeux
 
Étudiant
Inscription : décembre 2006
Messages : 167
Détails du profil
Informations personnelles :
Âge : 26

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : décembre 2006
Messages : 167
Points : 64
Points : 64
Ouai ca peut me faire gagner 5h00 de débugage !
mattyeux est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h59.


 
 
 
 
Partenaires

Hébergement Web