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 espaces dans requête


Sujet :

ASP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    151
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 151
    Points : 116
    Points
    116
    Par défaut Problème espaces dans requête
    Bonjour,

    J'ai un problème avec une requête que je dois faire sur une base de données. Je dois afficher les enregistrements ayant une certaine provenance (obtenue par cookie d'une liste déroulante sur une autre page). Cette requête ne fonctionne que si la Provenance ne comporte qu'un seul mot (genre 'Paris') mais pas dès qu'il y a un espace (genre 'Le Mans'). Dès qu'un espace est présent dans la Provenance, je me retrouve avec l'erreur suivante :

    ADODB.Field (0x800A0BCD)
    BOF ou EOF est égal à True ou l'enregistrement actuel a été supprimé. L'opération demandée nécessite un enregistrement actuel.
    /cedopal/testcedopal/getPackProvenance.asp, line 89
    Quelqu'un saurait-il comment éviter ce problème? Voici mon code :

    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
    25
    26
    27
    28
    29
    30
    <%
     
    dim sID_Provenance, sProvenance
     
    dim sSQL, sSQL2, sPack, sNom_Provenance
     
     
    sProvenance = request.cookies("ID_Provenance")
     
    sSQL2 = "select Pack.Provenance, Pack.Pack from Pack where Pack.Provenance = '" & sProvenance & "'"
     
    Set rsProvenance = connect.execute (sSQL2)
    sNom_Provenance = rsProvenance("Provenance")
     
     
    %>
     
    <p>Nom de la provenance : <% = sNom_Provenance %></p>
     
    <%                                                                     
     
    do while not rsProvenance.eof
    sPack = rsProvenance ("Pack")
    %>
     
          <p> <%=sPack%> </p>
    <%
    rsProvenance.Movenext
    loop
    %>
    Merci d'avance!

  2. #2
    Membre confirmé Avatar de totoche
    Inscrit en
    Janvier 2004
    Messages
    1 090
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 090
    Points : 558
    Points
    558
    Par défaut
    test un response.write de ton sql
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    sSQL2 = "select Pack.Provenance, Pack.Pack from Pack where Pack.Provenance = '" & sProvenance & "'" 
    response.write sSQL2 
    response.end
    pour verifier qu'il n'y ait pas que "Le" dans sProvenance

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    151
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 151
    Points : 116
    Points
    116
    Par défaut
    Tout d'abord, merci pour ton aide.

    J'ai testé la requête pour voir ce qu'il récupère et en fait il récupère bien le nom entier, mais en supprimant les espaces, ce qui donne LeMans par exemple. Et fatalement, ça ne correspond pas à l'enregistrement dans la base de données.

    En fait en poussant le test un peu plus loin je me suis rendu compte que c'est dans le cookie qu'il supprime les espaces. Est-ce qu'il y a moyen de forcer celui-ci à les conserver ?

  4. #4
    Membre éclairé
    Inscrit en
    Janvier 2004
    Messages
    633
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 633
    Points : 721
    Points
    721
    Par défaut
    Je connais pas trop l'utilisation des cookies mais avant de d'envoyer les données dedans tu peux remplacer les espaces par un caractère particulier grâce a un replace puis quand tu les récupères tu fais l'inverse

  5. #5
    Membre confirmé Avatar de totoche
    Inscrit en
    Janvier 2004
    Messages
    1 090
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 090
    Points : 558
    Points
    558
    Par défaut
    Salut,
    Le nom et la valeur ne peuvent pas contenir les caractères point-virgule (, virgule (,) et espace (). Pour mettre de telles valeur il faut recourir à l'encodage URL (Espace = %20)
    Comme te l'a conseillé Pymm un bon replace fera l'affaire.

    bon code

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    151
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 151
    Points : 116
    Points
    116
    Par défaut
    Merci beaucoup pour votre précieuse aide. Pourrais-je vous demander encore un dernier service?

    J'ai essayé d'utiliser le replace, mais il me met une erreur. Voici mon code :
    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
    dim sID_Provenance, sProvenance
     
    sSQL = "select distinct pack.Provenance from pack order by Provenance"
     
    %>                  
        <div class="select">
          <select onChange="mfAfficherProvenance(this)">
            <option class="option" value="">
              Choisissez une provenance
            </option>
            <%
                                                Set rsProvenance = connect.execute (sSQL)
                                              do while not rsProvenance.eof
                                              sProvenance = rsProvenance ("Provenance")
    		          replace(sProvenance," ","&nbsp")
                                                %>
            <option class="option" value="<% = sProvenance %>">
              <% = sProvenance %>
            </option>
            <% rsProvenance.Movenext
                                                loop
     
                                                %>
          </select>
    et voici l'erreur qu'il me donne :
    Erreur de compilation Microsoft VBScript (0x800A0414)
    L'appel d'une fonction Sub n'admet pas de parenthèses.
    Merci d'avance

  7. #7
    Membre éclairé
    Inscrit en
    Janvier 2004
    Messages
    633
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 633
    Points : 721
    Points
    721
    Par défaut
    il faut que tu affectes ton replace dans une variable :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mavar=replace(monstring," ","&nbsp")

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    151
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 151
    Points : 116
    Points
    116
    Par défaut
    Grrrrrrr....

    Je l'ai mis dans la variable comme tu as dit et maintenant il me donne cette erreur

    Erreur d'exécution Microsoft VBScript (0x800A005E)
    Utilisation non autorisée de Null: 'replace'
    mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Set rsProvenance = connect.execute (sSQL)
    do while not rsProvenance.eof
    sProvenance = rsProvenance ("Provenance")
    sReplace = replace(sProvenance," ","&nbsp")
    %>
    <option class="option" value="<% = sReplace %>">
    <% = sProvenance %>
    </option>
    <% rsProvenance.Movenext
    loop

    je vais devenir fou !

  9. #9
    Membre éclairé
    Inscrit en
    Janvier 2004
    Messages
    633
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 633
    Points : 721
    Points
    721
    Par défaut
    Est-ce que tu as des provenances qui peuvent être NULL ?

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    151
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 151
    Points : 116
    Points
    116
    Par défaut
    oui, je viens de trouver j'ai mis une condition et ça passe.

    Mais il plante quand même dans la page suivante, toujours la même erreur, alors que j'ai un peu regardé tout ça avec le response.write, il récupère bien le bon nom, il met ce qu'il faut dans la requête, mais ça ne marche pas. Je comprend vraiment pas là...

    Voilà ce que j'ai sur cette page :


    sProvenance = request.cookies("ID_Provenance")


    sSQL2 = "select Pack.Provenance, Pack.Pack from Pack where Pack.Provenance = '" & sProvenance & "'"
    Jusque là tout va bien il m'affiche le bon nom et il est bien repris dans la requete
    Set rsProvenance = connect.execute (sSQL2)
    sNom_Provenance = rsProvenance("Provenance")
    et là ça ne marche pas il ne trouve pas de valeur !!!!

  11. #11
    Membre éclairé
    Inscrit en
    Janvier 2004
    Messages
    633
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 633
    Points : 721
    Points
    721
    Par défaut
    quel est le message d'erreur ?

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    151
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 151
    Points : 116
    Points
    116
    Par défaut
    toujours le même qu'au début, et il n'apparait que quand j'ai des espaces dans sProvenance
    ADODB.Field (0x800A0BCD)
    BOF ou EOF est égal à True ou l'enregistrement actuel a été supprimé. L'opération demandée nécessite un enregistrement actuel.

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    151
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 151
    Points : 116
    Points
    116
    Par défaut
    Ca marche, j'ai fini par trouver !

    Si ça vous intéresse de savoir ce qui n'allait pas, en fait j'avais remplacé les espace par &nbsp ce qui était directement interprété par espace quand je récupérais le cookie, mais qui ne permettait néanmoins pas de récupérer la valeur. Là, j'ai remplacé par une quelconque chaine de caractères que je ne risque pas de retrouver dans ma table, et je fais l'opération inverse quand j'ai récupéré le cookie et je n'ai plus de problème !

    Merci beaucoup à tous les deux pour votre aide, et à bientôt peut-être, en espérant pouvoir un jour vous rendre la pareille !

    Jarod

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

Discussions similaires

  1. problème espaces dans shell
    Par meavy dans le forum Linux
    Réponses: 10
    Dernier message: 08/06/2008, 12h45
  2. Problème Variable dans requête SQL
    Par maxime350 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 10/04/2008, 20h55
  3. [Requête]problème filtrage dans requète
    Par jcdelo dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 18/04/2007, 09h56
  4. [SQL] Problème de " dans requête SQL
    Par cciocc dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 19/05/2006, 10h22
  5. [Access 2003] - Problème date dans requête
    Par Leesox dans le forum Access
    Réponses: 11
    Dernier message: 14/10/2005, 08h51

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