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
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
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 ← ← 👈
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
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 ← ← 👈
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.
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part dico.add srv,""
Deux alternatifs. Soit vous faites comme ça remplaçant la ligne desus :
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
3 if not dico.exists(srv) then dico.add srv, "" end if
L'un ou l'autre.
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;"
Faites correctement comme cela, il n'y a pas de cause pour la directive et la construction d''on error resume next" dessous.
Partager