Trucsweb.com

Forum de discussion

 Forum « Programmation ASP » (archives)

Re: problème pour afficher le resultat d'une requête

Envoyé: 1er octobre 2004, 7h38 par Oznog


Salut,

Je recopie ici ton message perdu hier lors de manipulation côté serveur. Note que tu ne doit pas créer un nouveau sujet pour essentiellement le même problème.

DATE : 1/10/2004 5:40:36 AM
AUTEUR: petitepunk
TITRE : probleme d'affichage d'un tableau a partir d'une base
--------------------
Je poste un nouveau message car cette fois ci le plus gros du travail fonctionne, il ne me reste plus qu'à afficher mon tableau a double entrée(les contacts sont classés par magasin).

Donc j'ai 2 tables (contact et magasin) et une troisieme qui sert de relation (contact_mag)entre ces 2 tables et qui est composées des ID de chaqu'une des 2 tables.

Mon tableau doit être comme ceci:

NOM......MAIL....TEL.....PORTABLE

MAGASIN 1

NOM......@mail....tel....MOBILE
NOM2.....@mail....tel....MOBILE
...

MAGASIN 2

NOM3.....@mail....tel....MOBILE
..


J'ai donc ecris le code suivant:


sql="SELECT contact.contact_id, contact.contact_nom, contact.messagerie, contact.tel_local, contact.tel_fixe, contact.tel_mobile, contact_mag.mag_id, magasin.mag_nom
FROM magasin
INNER JOIN (contact INNER JOIN contact_mag ON contact.contact_id = contact_mag.contact_id)
ON magasin.mag_id = contact_mag.mag_id"

rs.Open sql, objConnexion
....
if rs.eof = false then

rs.MoveFirst

DO WHILE not rs.eof
DO UNTIL "mag_id" <> NULL
%><tr>
<td><%=rs("mag_nom")%></td>

<%DO UNTIL "sql "= TRUE%>
<td><B><%=rs("contact_nom")%>
</B></td>
<td><a href="mailto:<%=rs("messagerie")%>@ubaldi.mail"><%=rs("messagerie")%>@ubaldi.mail</a></td>

<td><%=rs("tel_local")%></td>

<td><%=rs("tel_fixe")%></td>

<td><%=rs("tel_mobile")%></td>

</tr>

<%rs.MoveNext
loop
loop
Loop
end if
%>


Voici l'erreur qu'il m'affiche et je ne vois pas comment afficher mon tableau autrement:

BOF ou EOF est égal à True ou l'enregistrement actuel a été supprimé. L'opération demandée nécessite un enregistrement actuel.
aucune ligne d'erreur n'est indiqué.

Quelqu'un a t il deja eu cette erreur?

--------------

Tu boucle à l'extérieur du jeu de résultat (recordset) BOF = bottom of file et EOF = End of file. Un peu comme à l'extérieur d'une matrice (array). Bien sûr impossible et ça provoque une erreur.

Pour t'assurer de ne pas sortir des limites du recordset tu ne dois pas faire de test avec une variable abstrait. Mais dans ton cas c'est encore pire parceque tu mélange TROIS boucles! La seule de bonne est la première (DO WHILE not rs.eof) mais tu ne la gère pas, en fait elle ne sert à rien.

' Très très mauvais
DO WHILE not rs.eof
DO UNTIL "mag_id" <> NULL
DO UNTIL "sql "= TRUE
...
rs.MoveNext
loop
loop
loop

' Bonne façon

' Très très mauvais
DO WHILE not rs.eof
DO UNTIL "mag_id" <> NULL
DO UNTIL "sql "= TRUE
...
loop
loop
rs.MoveNext
loop

Bon, à première vue je pense que tu dois remplacer les deux boucle à l'intérieur par de simple test de condition.

if "mag_id" <> NULL then...
et
if "sql "= TRUE then...

Etc.

En fait il doit y avoir qu'une seule boucle (WHILE) PAR recordset. Et le movenext doit IMPÉRATIVEMENT être associé à cette boucle si tu ne veux pas revoir cette erreur.

En gros tu fait

Boucle tant et aussi longtemps que tu n'est pas à la fin du fichier (EOF)

... traitement sur le record ...

passe au record suivant
Fin de la boucle et donc remonte en haut, et s,il n,y a pas de record la condition n'est plus bonne et on sort de cette boucle.

Ciao
Oznog


Réponses

 sp spRe: problème pour afficher le resultat d'une requête petitepunk1/10/2004
 sp spRe: problème pour afficher le resultat d'une requête Salem1/10/2004
 sp spRe: problème pour afficher le resultat d'une requête petitepunk2/10/2004
 sp spRe: problème pour afficher le resultat d'une requête Salem2/10/2004
 sp spRe: problème pour afficher le resultat d'une requête petitepunk2/10/2004
Aucun médias sociaux
X

Trucsweb.com Connexion

X

Trucsweb.com Mot de passe perdu

X

Trucsweb.com Conditions générales

Conditions

Responsabilité

La responsabilité des Trucsweb.com ne pourra être engagée en cas de faits indépendants de sa volonté. Les informations mises à disposition sur ce site le sont uniquement à titre purement informatif et ne sauraient constituer en aucun cas un conseil ou une recommandation de quelque nature que ce soit.

Aucun contrôle n'est exercé sur les références et ressources externes, l'utilisateur reconnaît que les Trucsweb.com n'assume aucune responsabilité relative à la mise à disposition de ces ressources, et ne peut être tenue responsable quant à leur contenu.

Droit applicable et juridiction compétente

Les règles en matière de droit, applicables aux contenus et aux transmissions de données sur et autour du site, sont déterminées par la loi canadienne. En cas de litige, n'ayant pu faire l'objet d'un accord à l'amiable, seuls les tribunaux canadien sont compétents.

X

Trucsweb.com Trucsweb

X

Trucsweb.com Glossaire

X

Trucsweb.com Trucsweb

X

Trucsweb.com Trucsweb

Conditions

Aucun message!

Merci.

X
Aucun message!
X

Trucsweb.com Créer un compte