Envoyer une requête SQL depuis un VBS

Résolu/Fermé
YLKweb Messages postés 6 Date d'inscription vendredi 16 septembre 2011 Statut Membre Dernière intervention 3 juillet 2014 - Modifié par YLKweb le 1/07/2014 à 17:13
YLKweb Messages postés 6 Date d'inscription vendredi 16 septembre 2011 Statut Membre Dernière intervention 3 juillet 2014 - 3 juil. 2014 à 10:57
Bonjour à toutes et tous,

Pour des besoins professionnels, je cherche a créer un petit outil basique en VBS permettant à un utilisateur de saisir des données qui seront récupérées dans des variables puis réinjectées dans une requête SQL.

N'étant pas développeur à la base, je ne suis pas un "pro" du VBS... Disons plutôt que je "bidouille".
Et il se trouve que le script que j'ai mis en place bloque au moment de retranscrire la requête SQL.

En fait, je récupère bien les saisies de l'utilisateur dans mes variables, je lance ensuite un CMD utilisant lui-même l'outil mysql.exe permettant de faire des requêtes sur une BDD MySQL.
Mais c'est là que le bas blesse...
Le CMD, appelé par mon VBS, refuse de prendre en compte les parenthèses inclues dans ma requête SQL. Résultat : La requête est bancale et ça ne fonctionne pas. Logique.

Ma question : Auriez-vous plus simple pour requêter sur la BDD directement depuis VBS sans passer par la case CMD (du genre appeler mysql.exe directement en lui passant les paramètres qui vont bien) ? Ou peut-être savez-vous comment je pourrais procéder pour que mes parenthèses soient tout simplement prisent en compte ?

Merci d'avance de votre aide précieuse !


Voici le code dans son état actuel :

Dim UserInput
On Error Resume Next
msg01 = msgbox("Bonjour ! Cet utilitaire permet l'ajout d'un client dans la base de données. Désirez-vous continuer ?",4+64+4096,"Ajout CLT BDD")
If msg01 = 6 Then
CLT = (InputBox ("Merci d'entrer le numéro du client à ajouter dans la base de données.", "Ajout CLT BDD", "Entrez une valeur à trois chiffres"))
PVT = (InputBox ("Merci d'entrer maintenant le point de vente de ce client.", "Ajout CLT BDD", "Entrez une valeur à trois chiffres"))
NOMFAC = (InputBox ("Merci d'entrer maintenant le nom lié à la facture.", "Ajout CLT BDD", "Entrez un nom en lettres majuscules"))
ADDFAC = (InputBox ("Merci d'entrer maintenant la ville de l'adresse de facturation.", "Ajout CLT BDD", "Entrez une ville en lettres majuscules"))
NOMLIV = (InputBox ("Merci d'entrer maintenant le nom lié à la livraison.", "Ajout CLT BDD", "Entrez un nom en lettres majuscules"))
ADDLIV = (InputBox ("Merci d'entrer maintenant la ville de l'adresse de livraison.", "Ajout CLT BDD", "Entrez une ville en lettres majuscules"))
msg02 = msgbox("Merci. La mise à jour sera effective dans les minutes à venir. Cet utilitaire va maintenant se fermer.",0+64+4096,"Ajout CLT BDD")
set shellobj = CreateObject("WScript.Shell")
shellobj.run "cmd"
wscript.sleep 500
shellobj.sendkeys "c:\wamp\bin\mysql\mysql5.5.24\bin\mysql.exe -u USER --password=PASS -e ""INSERT INTO 'Nom_DB'.'Nom_Table' ('CLT', 'PVT', 'LIV_NOM', 'LIV_BUR_DISTRIB', 'FAC_NOM', 'FAC_BUR_DISTRIB') VALUES ('"& CLT &"', '"& PVT &"', '"& NOMLIV &"', '"& ADDLIV &"', '"& NOMFAC &"', '"& ADDFAC &"');"" {enter}exit{enter})"
End If
If x = 7 Then
End If

P.S : Pour info, j'ai testé de lancer la requête à la mano depuis un CMD, ça marche... C'est uniquement lorsque le VBS la réécrit dans le CMD qu'il "omet" les parenthèses...
J'ai aussi visualisé ma requête via un Wscript.Echo et ça intègre bien mes parenthèses...
Bref, mystérieux...



--

3 réponses

Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
1 juil. 2014 à 22:52
Bonjour,

Une piste peut être ici https://www.rgagnon.com/wshdetails/wsh-0011.html

0
YLKweb Messages postés 6 Date d'inscription vendredi 16 septembre 2011 Statut Membre Dernière intervention 3 juillet 2014
2 juil. 2014 à 10:19
Salut Polux31,

Merci de ta piste mais ça me semble hors-sujet... Je n'utilise pas de connecteur ODBC.

Une autre idée ?


--
0
YLKweb Messages postés 6 Date d'inscription vendredi 16 septembre 2011 Statut Membre Dernière intervention 3 juillet 2014
3 juil. 2014 à 10:57
Bon eh bien j'ai ma solution...
Il suffit de mettre les parenthèses entre accolades pour que le CMD les interprète correctement.

Sinon, pour info, je vais malgré tout regarder pour installer le pilote ODBC MySQL, ça peut servir et ça fera plus propre que de passer par un CMD. :)

Merci encore.

--
0