Envoyer une requête SQL depuis un VBS

Résolu
YLKweb Messages postés 6 Date d'inscription vendredi 16 septembre 2011 Statut Membre Dernière intervention 3 juillet 2014 - 1 juil. 2014 à 19:49
YLKweb Messages postés 6 Date d'inscription vendredi 16 septembre 2011 Statut Membre Dernière intervention 3 juillet 2014 - 3 juil. 2014 à 10:59
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

NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
1 juil. 2014 à 20:03
Pourquoi ne pas appeler directement la commande ?
0
YLKweb Messages postés 6 Date d'inscription vendredi 16 septembre 2011 Statut Membre Dernière intervention 3 juillet 2014
Modifié par YLKweb le 2/07/2014 à 10:19
Salut NHenry,

Merci de ta piste.
Je ne suis pas contre... Si je savais ce que tu entends par là. Tu peux développer un peu s'il te plaît ? :)

--
0
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
2 juil. 2014 à 23:07
shellobj.run ("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})")
0
YLKweb Messages postés 6 Date d'inscription vendredi 16 septembre 2011 Statut Membre Dernière intervention 3 juillet 2014
Modifié par YLKweb le 3/07/2014 à 11:00
Merci bien.

Effectivement je n'ai pas essayé comme ça.

Ceci dit, je viens de trouver ma solution : Il suffit de mettre les parenthèses entre accolades pour que le CMD les interprète convenablement...

Merci du tuyau quand même. :)

Topic résolu.
--
0
Rejoignez-nous