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 :

Pb valeur Null dans RecordSet avec jointure


Sujet :

ASP

  1. #1
    Membre régulier
    Inscrit en
    Juillet 2010
    Messages
    158
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 158
    Points : 89
    Points
    89
    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 : 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
    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

  2. #2
    Membre confirmé Avatar de tumoo
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2011
    Messages
    309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Charente Maritime (Poitou Charente)

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 309
    Points : 522
    Points
    522
    Par défaut
    salut

    quel est le message d'erreur ?

    tu as essayé avec isNull(rsX("EventDate"))au lieu de rsX("EventDate")<>"" ?

  3. #3
    Membre régulier
    Inscrit en
    Juillet 2010
    Messages
    158
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 158
    Points : 89
    Points
    89
    Par défaut
    Arf bien sur pourquoi je n'y avait pas pensé plus tot! merci tumoo.

  4. #4
    Membre régulier
    Inscrit en
    Juillet 2010
    Messages
    158
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 158
    Points : 89
    Points
    89
    Par défaut
    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?

  5. #5
    Membre confirmé Avatar de tumoo
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2011
    Messages
    309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Charente Maritime (Poitou Charente)

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 309
    Points : 522
    Points
    522
    Par défaut
    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 ?

  6. #6
    Membre régulier
    Inscrit en
    Juillet 2010
    Messages
    158
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 158
    Points : 89
    Points
    89
    Par défaut
    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

  7. #7
    Membre confirmé Avatar de tumoo
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2011
    Messages
    309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Charente Maritime (Poitou Charente)

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 309
    Points : 522
    Points
    522
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 ?

  8. #8
    Membre régulier
    Inscrit en
    Juillet 2010
    Messages
    158
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 158
    Points : 89
    Points
    89
    Par défaut
    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'

  9. #9
    Membre confirmé Avatar de tumoo
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2011
    Messages
    309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Charente Maritime (Poitou Charente)

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 309
    Points : 522
    Points
    522
    Par défaut
    quel message d'erreur ?

  10. #10
    Membre régulier
    Inscrit en
    Juillet 2010
    Messages
    158
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 158
    Points : 89
    Points
    89
    Par défaut
    Pas de message d'erreur... juste ça et l'erreur renvoyée à la ligne :

    IF rsX("EventDate") <> "" THEN

  11. #11
    Membre confirmé Avatar de tumoo
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2011
    Messages
    309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Charente Maritime (Poitou Charente)

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 309
    Points : 522
    Points
    522
    Par défaut
    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,

  12. #12
    Membre régulier
    Inscrit en
    Juillet 2010
    Messages
    158
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 158
    Points : 89
    Points
    89
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  13. #13
    Membre confirmé Avatar de tumoo
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2011
    Messages
    309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Charente Maritime (Poitou Charente)

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 309
    Points : 522
    Points
    522
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  14. #14
    Membre régulier
    Inscrit en
    Juillet 2010
    Messages
    158
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 158
    Points : 89
    Points
    89
    Par défaut
    La solution, j'ai changé ma condition :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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...

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

Discussions similaires

  1. Jointure entre 2 valeurs null dans un tMap
    Par sedah dans le forum Développement de jobs
    Réponses: 1
    Dernier message: 19/04/2010, 11h22
  2. Valeur nulle dans un Recordset et boucle de décision
    Par agrosjea dans le forum VBA Access
    Réponses: 5
    Dernier message: 30/07/2007, 12h01
  3. Réponses: 4
    Dernier message: 06/05/2007, 14h43
  4. Valeur null dans une jointure
    Par Christophe P. dans le forum Langage SQL
    Réponses: 2
    Dernier message: 11/12/2006, 09h48
  5. Problème de valeur null dans un recordset
    Par Petzouille57 dans le forum Access
    Réponses: 3
    Dernier message: 19/05/2005, 11h27

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