Envoyer une requête SQL depuis un VBS [Résolu]

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

--
Afficher la suite 

4 réponses

Répondre au sujet
NHenry 14129 Messages postés vendredi 14 mars 2003Date d'inscriptionModérateurStatut 19 avril 2018 Dernière intervention - 1 juil. 2014 à 20:03
0
Utile
Pourquoi ne pas appeler directement la commande ?
Commenter la réponse de NHenry
YLKweb 6 Messages postés vendredi 16 septembre 2011Date d'inscription 3 juillet 2014 Dernière intervention - Modifié par YLKweb le 2/07/2014 à 10:19
0
Utile
1
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 ? :)

--
NHenry 14129 Messages postés vendredi 14 mars 2003Date d'inscriptionModérateurStatut 19 avril 2018 Dernière intervention - 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})")
Commenter la réponse de YLKweb
YLKweb 6 Messages postés vendredi 16 septembre 2011Date d'inscription 3 juillet 2014 Dernière intervention - Modifié par YLKweb le 3/07/2014 à 11:00
0
Utile
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.
--
Commenter la réponse de YLKweb

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.