[VBS] sql récupérer le résultat d'une requete

Résolu
remifalcon Messages postés 62 Date d'inscription mercredi 22 février 2006 Statut Membre Dernière intervention 20 novembre 2008 - 5 août 2008 à 08:21
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 - 21 janv. 2009 à 07:28
Bonjour à tous!
Je cherche à récupérer le résultat d'une requête SQL en vbs mais il doit me manquer quelque chose 
error - "Fin d'instruction attendue"
Le insert fonctionne

Set mConnection = CreateObject("ADODB.Connection")
mConnection.Open "Provider=SQLOLEDB.1;Data Source=CINFPC22\SQLEXPRESS;Initial Catalog=BDCBTEST1;Integrated security=SSPI"

mConnection.Execute "INSERT...."

Set mRecordset = CreateObject("ADODB.Recordset")set mRecordset mConnection.Execute"Select * from Utilisateurs where ID_Connexion '12'"Comment puis je récupérer le résultat de la reque pour l'afficher?

Je tiens a préciser que j'ai déja chercher sur google avant de vous consulter.
Merci beaucoup!.

10 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
5 août 2008 à 08:51
la méthode Execute de ta connection ne renvoie pas de donnée.
elle sert pour faire des INSERT INTO, des UPDATE, DELETE et autres requetes d'action.

Il te faut utiliser la méthode OpenRecordset

par la suite, il te suffit de manipuler ton recordset.

a noter que dans ta requete SQL, tu as mis ='12'
gaffe, si ce champ est déclaré en tant que numérique, il ne faut pas mettre de quotes (uniquement là pour baliser les chaines de caracteres).

tu fais, de plus un premier Set mRecordset = CreateObject(...)
puis, de suite un autre Set mRecordset =

ton recordset vide, que tu as créé en premier est détruit directement, cette etape est inutile.

en résumé:

Set mConnection = CreateObject("ADODB.Connection")
mConnection.Open "Provider=SQLOLEDB.1;Data Source=CINFPC22\SQLEXPRESS;Initial Catalog=BDCBTEST1;Integrated security=SSPI"

mConnection.Execute "INSERT...."

set mRecordset = mConnection.OpenRecordset("Select * from Utilisateurs where ID_Connexion=12")

MsgBox mRecordset.Fields("Nom")
1
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
5 août 2008 à 09:13
pour l'erreur, a voir si la requête est correcte (voir cette histoire de séparateur, pour la valeur 12)

Recordset, une sorte de tableau... oui, si l'on veux.

"Nom", c'est le nom du champ a recupérer, dans l'enregistrement (ligne) actuel

voir après les multes exemples, de manipulation ADO... (et y'en a plein, vraiment)

voir MoveNext, EOF, MoveFirst, RecordCount...
1
remifalcon Messages postés 62 Date d'inscription mercredi 22 février 2006 Statut Membre Dernière intervention 20 novembre 2008
5 août 2008 à 09:06
Yes merci pour ton aide je sens que ça avance bien la

Juste lors de l'exécution de la ligne

set mRecordset = mConnection.OpenRecordset("Select * from Utilisateurs")

 J'ai droit à une petite erreur  "Argument de type incorrect.."  source  ->ADODB

J'ai testé ma requête sur le serveur sql directement ça tourne.

Et sinon mRecordset ça devient une sorte de tableau du coup si la requête renvoi plusieurs champ?
MsgBox mRecordset.Fields("Nom")   -> "Nom" représente quoi?

Et tout cas merci encore tu m'avance bien là
0
remifalcon Messages postés 62 Date d'inscription mercredi 22 février 2006 Statut Membre Dernière intervention 20 novembre 2008
5 août 2008 à 09:18
Ok je vais regarder
Merci beaucoup pour ton temps en tout cas.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
remifalcon Messages postés 62 Date d'inscription mercredi 22 février 2006 Statut Membre Dernière intervention 20 novembre 2008
5 août 2008 à 09:54
Re moi
Bon j'ai regardé pour mon erreur "Argument de type incorrect.."  source  ->ADODB
La syntaxe de ma requête sql est valide c'est sur

J'ai regarder sur google  j'ai trouvé qu'il fallait peut être inclure   ADOVBS.INC mais bon en vbs on peut pas inclure grand chose je pense.

Donc le code qui bloque c'est juste la 3eme ligne et le je ne vois vraiment plus pourquoi

Set mConnection = CreateObject("ADODB.Connection")
mConnection.Open "Provider=SQLOLEDB.1;Data Source=......."

set mRecordset = mConnection.OpenRecordset("SELECT LoginUser FROM Utilisateurs")    <-

Je cherche encore si quelqu'un à une idée.
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
5 août 2008 à 09:56
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
5 août 2008 à 10:31
:/ ravi de voir que ca fonctionne, mais ca me laisse coi
0
cs_akaii Messages postés 109 Date d'inscription mardi 10 janvier 2006 Statut Membre Dernière intervention 14 février 2014
20 janv. 2009 à 23:46
Est-ce que l'un de vous saurait comment faire pour mettre le contenu du rs dans le un fichier CSV ?
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
21 janv. 2009 à 07:28
qu'est-ce qu'un fichier CSV ?

un enregistrement par ligne ; des champs qui se suivent, séparés par des ";"

donc lorsque l'on sait récupérer un champ, et se déplacer dans les enregistrements...

Do Until oRs.EOF
Print #1, oRs.Fields("Nom") & ";" & _
oRs.Fields("Prénom") & ";" & _
oRs.Fields("Adresse1") & ";" & _
oRs.Fields("Adresse2") & ";" & _
oRs.Fields("Adresse3") & ";" & _
oRs.Fields("CP") & ";" & _
oRs.Fields("Ville") & ";" & _
oRs.Fields("CodeCivilité")
oRs.MoveNext
Loop
0
remifalcon Messages postés 62 Date d'inscription mercredi 22 février 2006 Statut Membre Dernière intervention 20 novembre 2008
5 août 2008 à 10:27
re  -No offense sir

J'ai trouvé la solution , il fallait faire un execute via un objet ADODB.Recordset

requete = "SELECT * FROM Utilisateurs"
 

set cn=CreateObject("ADODB.Connection")
set rs=CreateObject("ADODB.Recordset")

cn.Open "Provider=SQLOLEDB.1;Data Source=CINFPC22\SQLEXPRESS;Initial Catalog=BDCBTEST1;Integrated security=SSPI"

set rs = cn.Execute (requete)

Voilou
-2
Rejoignez-nous