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 23/05/2011, 11h20   #1
Nouveau Membre du Club
 
Sleeg Adri
Inscription : juillet 2010
Messages : 130
Détails du profil
Informations personnelles :
Nom : Sleeg Adri

Informations forums :
Inscription : juillet 2010
Messages : 130
Points : 38
Points : 38
Par défaut Pb valeur Null dans RecordSet avec jointure

Bonjour,

Sur ma page d'artistes dans la colonne de gauche, je voudrais afficher des dates en relation avec des artistes enregistrés auparavant dans ma BD, il y a une table pour les artistes et les dates sont dans la table event. Lorsque j'ai enregistré l'artiste et que je met une plusieurs dates, aucun problème, la page s'affiche. Mais lorsque j'enregistre seulement un artiste sans dates, la page plante.
J'ai fait une jointure pour avoir les dates en relation avec les artistes. Donc si la page plante c'est certainement pcq je n'ai qu'un artiste et que l'event en relation n'existe pas.

Et je ne vois pas comment je peux faire pour que ma page s'affiche quand même...

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 
IF pagename = "artistes.asp" THEN
	IF Request.QueryString("id") <> "" THEN
		Set rsX = Server.CreateObject("ADODB.Recordset")
		stmtX= "SELECT * FROM Artistes JOIN Events ON EventArtiste = ArtisteID WHERE ArtisteID = '"& Request.QueryString("id") &"';"
		rsX.Open stmtX, Application("ConnMsi"),3,1,1
			IF rsX("EventDate") <> "" THEN
				Response.Write "<tr><td style=""padding-bottom:25px;padding-top:5px;"">"
				Response.Write "<table border=""0"" cellpadding=""2"" cellspacing=""0"" width=""90%"" align=""center"">"
				Response.Write "<tr><td style=""padding-bottom:10px;""><b>"
				IF rsX.recordcount > 1 THEN Response.Write Application("tNextDate2"& Session("lang") &"") ELSE Response.Write Application("tNextDate1"& Session("lang") &"") END IF
				Response.Write " :</b></td></tr>"
				DO UNTIL rsX.EOF
					Response.Write "<tr>"
					Response.Write "<td align=center><a href=""event.asp?id="& rsX("EventID") &""" style=""color:#FFFFFF;text-decoration:underline;"">"& Application("tLe"& Session("lang") &"") &" "& rsX("EventDate") &" "& Application("tA"& Session("lang") &"") &" "& rsX("EventLieu") &"</a></td>"
					Response.Write "</tr>"
					rsX.MoveNext
				LOOP
				Response.Write "</table></td></tr>"
			END IF
		rsX.Close
		set rsX=Nothing
	END IF
END IF
L'erreur est à la ligne suivante :

IF rsX("EventDate") <> "" THEN
sleeg est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2011, 13h49   #2
Membre expérimenté
 
Avatar de tumoo
 
Homme
Développeur informatique
Inscription : janvier 2011
Messages : 309
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 22
Localisation : France, Charente Maritime (Poitou Charente)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Industrie

Informations forums :
Inscription : janvier 2011
Messages : 309
Points : 550
Points : 550
salut

quel est le message d'erreur ?

tu as essayé avec isNull(rsX("EventDate"))au lieu de rsX("EventDate")<>"" ?
tumoo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2011, 14h08   #3
Nouveau Membre du Club
 
Sleeg Adri
Inscription : juillet 2010
Messages : 130
Détails du profil
Informations personnelles :
Nom : Sleeg Adri

Informations forums :
Inscription : juillet 2010
Messages : 130
Points : 38
Points : 38
Arf bien sur pourquoi je n'y avait pas pensé plus tot! merci tumoo.
sleeg est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2011, 14h18   #4
Nouveau Membre du Club
 
Sleeg Adri
Inscription : juillet 2010
Messages : 130
Détails du profil
Informations personnelles :
Nom : Sleeg Adri

Informations forums :
Inscription : juillet 2010
Messages : 130
Points : 38
Points : 38
Mais en fait cela rend ma condition IF rsX("EventDate") <> "" THEN inutile puisque je voulais que ma table avec les dates ne s'affiche plus et la elle s'affiche quand même mais sans dates.

Une idée?
sleeg est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2011, 14h20   #5
Membre expérimenté
 
Avatar de tumoo
 
Homme
Développeur informatique
Inscription : janvier 2011
Messages : 309
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 22
Localisation : France, Charente Maritime (Poitou Charente)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Industrie

Informations forums :
Inscription : janvier 2011
Messages : 309
Points : 550
Points : 550
Tu veux que si un enregistrement ne possède pas de date, la ligne ne s'affiche pas et quand elle possède une date, elle s'affiche ?
tumoo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2011, 14h35   #6
Nouveau Membre du Club
 
Sleeg Adri
Inscription : juillet 2010
Messages : 130
Détails du profil
Informations personnelles :
Nom : Sleeg Adri

Informations forums :
Inscription : juillet 2010
Messages : 130
Points : 38
Points : 38
la table, oui (celle qui est dans le code que j'ai joint).

Puisque maintenant j'ai "prochaines dates" qui s'affiche et puis plus rien s'il n'y pas d'évènement donc inutile
sleeg est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2011, 14h41   #7
Membre expérimenté
 
Avatar de tumoo
 
Homme
Développeur informatique
Inscription : janvier 2011
Messages : 309
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 22
Localisation : France, Charente Maritime (Poitou Charente)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Industrie

Informations forums :
Inscription : janvier 2011
Messages : 309
Points : 550
Points : 550
Je ne suis pas sûr de bien saisir ton problème

enfin d'après ce que j'ai compris, je te dirais de faire

Code :
stmtX= "SELECT * FROM Artistes JOIN Events ON EventArtiste = ArtisteID WHERE ArtisteID = '"& Request.QueryString("id") &" AND EventDate IS NOT NULL "&"';"
ça devrait te donner le même résultat sans les lignes où la date est null
c'est ce que tu cherchais ?
tumoo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2011, 14h52   #8
Nouveau Membre du Club
 
Sleeg Adri
Inscription : juillet 2010
Messages : 130
Détails du profil
Informations personnelles :
Nom : Sleeg Adri

Informations forums :
Inscription : juillet 2010
Messages : 130
Points : 38
Points : 38
Oui c'est ce que je cherche...

J'avais essayé plus tôt ce que tu m'as indiqué au niveau de la requête SQL mais ça me donne la même erreur qu'au début :

error '80020009'
sleeg est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2011, 15h00   #9
Membre expérimenté
 
Avatar de tumoo
 
Homme
Développeur informatique
Inscription : janvier 2011
Messages : 309
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 22
Localisation : France, Charente Maritime (Poitou Charente)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Industrie

Informations forums :
Inscription : janvier 2011
Messages : 309
Points : 550
Points : 550
quel message d'erreur ?
tumoo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2011, 15h02   #10
Nouveau Membre du Club
 
Sleeg Adri
Inscription : juillet 2010
Messages : 130
Détails du profil
Informations personnelles :
Nom : Sleeg Adri

Informations forums :
Inscription : juillet 2010
Messages : 130
Points : 38
Points : 38
Pas de message d'erreur... juste ça et l'erreur renvoyée à la ligne :

IF rsX("EventDate") <> "" THEN
sleeg est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2011, 15h53   #11
Membre expérimenté
 
Avatar de tumoo
 
Homme
Développeur informatique
Inscription : janvier 2011
Messages : 309
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 22
Localisation : France, Charente Maritime (Poitou Charente)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Industrie

Informations forums :
Inscription : janvier 2011
Messages : 309
Points : 550
Points : 550
La requête te renvoie bien un résultat si tu l’exécutes directement dans ton SGBD ?

Logiquement, tu n'as plus besoin de tester IF rsX("EventDate") <> "" THEN avec la requête,
tumoo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2011, 16h36   #12
Nouveau Membre du Club
 
Sleeg Adri
Inscription : juillet 2010
Messages : 130
Détails du profil
Informations personnelles :
Nom : Sleeg Adri

Informations forums :
Inscription : juillet 2010
Messages : 130
Points : 38
Points : 38
Non la requête ne me renvoie pas de résultat, normal puisque la table jointe (event) dans le cas de cet artiste qui n'a pas encore de date n'existe pas...

J'ai essayé cela :

Code :
1
2
3
4
 
stmtX= "SELECT * FROM Artistes JOIN Events ON EventArtiste = ArtisteID WHERE ArtisteID = '"& Request.QueryString("id") &"' AND EventDate IS NOT NULL;"
		rsX.Open stmtX, Application("ConnMsi"),3,1,1
			IF rsX("EventDate") Is Not Null THEN
En me disant que ça n'afficherait pas la table (html cette fois) si la valeur était nulle. Mais ça me donne l'erreur suivante :

Microsoft VBScript runtime error '800a01a8'

Object required
sleeg est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2011, 16h50   #13
Membre expérimenté
 
Avatar de tumoo
 
Homme
Développeur informatique
Inscription : janvier 2011
Messages : 309
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 22
Localisation : France, Charente Maritime (Poitou Charente)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Industrie

Informations forums :
Inscription : janvier 2011
Messages : 309
Points : 550
Points : 550
Je ne suis pas sûr que is not null existe en ASP
plutôt isNull()

Si la requête ne renvoie pas de résultat, c'est normal que ça ne fonctionne pas derrière

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
stmtX= "SELECT * FROM Artistes JOIN Events ON EventArtiste = ArtisteID WHERE ArtisteID = '"& Request.QueryString("id") &"' AND EventDate IS NOT NULL;"
rsX.Open stmtX, Application("ConnMsi"),3,1,1
IF rsX.RecordCount<>"" THEN
    rsX.MoveFirst
        do while not rsX.EOF
              if rsX("tonchamp") then
                  ton traitement
              end if
         rsX.MoveNext
         loop
else
     Response.Write "rsX est vide"
end if
essaye de t'inspirer d'un code de ce genre, si c'est pas ça, je comprends vraiment pas ton problème
tumoo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2011, 16h58   #14
Nouveau Membre du Club
 
Sleeg Adri
Inscription : juillet 2010
Messages : 130
Détails du profil
Informations personnelles :
Nom : Sleeg Adri

Informations forums :
Inscription : juillet 2010
Messages : 130
Points : 38
Points : 38
La solution, j'ai changé ma condition :
Code :
IF rsX.RecordCount > 0 THEN
Merci je n'y aurait pas pensé sans ce que tu viens de mettre. Comme quoi lorsque les idées sont mises en commun...
sleeg 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 15h05.


 
 
 
 
Partenaires

Hébergement Web