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

VBScript Discussion :

Erreur SELECT Sql sur base Access


Sujet :

VBScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    retraité
    Inscrit en
    Juillet 2011
    Messages
    386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 80
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Juillet 2011
    Messages : 386
    Par défaut Erreur SELECT Sql sur base Access
    Bonjour
    Je rencontre une erreur lorsque je mets le critère de recherche entre double cotes.
    Pourtant sous Access ce type de requête est valide.
    Voici le message :


    http://cjoint.com/?DCCj5BhRiEH
    Images attachées Images attachées  

  2. #2
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 130
    Par défaut
    Salut
    Les quelques lignes de code et surtout la ligne de ta requête SQL sont un minimum pour pouvoir t'aider.
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  3. #3
    Membre éclairé
    Homme Profil pro
    retraité
    Inscrit en
    Juillet 2011
    Messages
    386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 80
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Juillet 2011
    Messages : 386
    Par défaut
    Voila le code complet:
    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
    31
    32
    33
    34
    35
    36
     
    option explicit
    dim oShell, pw , connstring  , rs
    dim 	sql,    srv    ,i, cles, dico
    dim q
            const adob   = "ADODB.RecordSet"
            const  mdb   = "Mesclés.mdb"
               Set dico  = CreateObject("Scripting.Dictionary")
               Set   Rs  = CreateObject(adob)
               Set oShell= createObject("Wscript.shell")
                      pw =  oShell.RegRead("HKEY_CURRENT_USER\S\P\pwa")
               Set oShell= nothing
            connstring   ="DRIVER={Microsoft Access Driver (*.mdb)};" & _
                          "User Id=admin;Password=" & pw & ";DBQ=" & mdb
     
      sql = "SELECT Services FROM Klés;"
            Rs.open sql , connstring
           do while not rs.eof
            srv=rs(0)
            dico.add srv,""
            rs.movenext
           loop
            rs.close
     
            cles=dico.keys
    on error resume next
    For i=0 To ubound(cles)
            srv=cles(i)
            if instr(1,srv,"'")>0 then q=chr(34) else q="'"
      sql = "SELECT count(*) FROM Klés WHERE Services="&q& srv &q
            Rs.open sql , connstring
            if err.number<>0 then msgbox err.description,, sql else rs.close
               err.number=0
     next
           msgbox "fin"
            wscript.quit

  4. #4
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 130
    Par défaut
    Remplacer ligne 29 if instr(1,srv,"'")>0 then q=chr(34) else q="'" par srv = Replace(srv, "'", "''")

    la Ligne 30 devient sql = "SELECT count(*) FROM Klés WHERE Services='" & srv & "'"

    Retour d'expérience ressent:
    Une habitude à conserver même si cela n'est aujourd'hui plus une obligation, pour les noms de BDs, de Tables ainsi que des Champs, ne pas utiliser de caractères accentués ni de signes exotiques de style / ou ~ ...
    Pourquoi j'insiste sur cette aspect, une personne voulant t'aider, un client, un ami auquel tu voudrais donner ta BDs, ..... n'aura pas forcement le système acceptant ces caractères.
    Dernièrement j'ai dû reprendre un code pendant plus de 2 heures pour traiter ce genre de problème.
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  5. #5
    Membre éclairé
    Homme Profil pro
    retraité
    Inscrit en
    Juillet 2011
    Messages
    386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 80
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Juillet 2011
    Messages : 386
    Par défaut
    Bonjour
    je comprends bien ce problème, mais dans mon cas il s'agit de noms de site sur internet et certains comportent des apostrophes comme celui de mon exemple ou encore, celui de Malwarebytes ("Malwarebytes's") et d'autres sans doute...
    Je constate que le VBS ne traite pas ces cas avec le Sql.
    Merci pour votre intervention.

  6. #6
    Membre Expert Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Par défaut
    Je ne crois pas votre diagnostic est le bon. Le problème provient plutôt de cette ligne :
    D'ailleurs je suis surpris que vous n'aviez pas capturer l'erreur à temps d'exécution si c'etait pas proprement en ce qui concerne la capturation d'erreurs.

    Deux alternatifs. Soit vous faites comme ça remplaçant la ligne desus :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if not dico.exists(srv) then
        dico.add srv, ""
    end if
    Soit vous réecrivez la ligne sql comme ça et gardez la ligne desus :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    'sql = "SELECT Services FROM Klés;"
    sql = "SELECT DISTINCT Services FROM Klés;"
    L'un ou l'autre.

    Faites correctement comme cela, il n'y a pas de cause pour la directive et la construction d''on error resume next" dessous.

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

Discussions similaires

  1. [Débutant] Problème syntaxe select from where sur base access
    Par IL-MAFIOSO dans le forum VB.NET
    Réponses: 2
    Dernier message: 19/06/2012, 17h27
  2. requête SQL sur base access
    Par pppa1 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 04/04/2011, 18h21
  3. requête SQL sur base access
    Par pppa1 dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 27/03/2011, 08h19
  4. [ODBC] Select limité sur base access
    Par max-mag dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 08/08/2008, 16h41
  5. requete sql de recherche sur base access
    Par donhatem dans le forum Langage SQL
    Réponses: 9
    Dernier message: 22/07/2008, 23h05

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