Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Erreur VBS ds requête SQL : kézako ?

6 réponses
Avatar
o.0
Bonjour,

Je tente en vain de faire une requête SQL à partir d'un VBscript dont voici
le code :

Set adoRecordset = CreateObject("ADODB.Recordset")
adoRecordset.ActiveConnection = "DRIVER=SQL Server;Trusted_Connection=Yes;"
_
& "DATABASE=Xpertease;SERVER=EXPERTEASE"
adoRecordset.Source = "SELECT dbo.T_Missions.Libellé, dbo.T_Missions.Numéro"
_
& "FROM dbo.T_Missions INNER JOIN" _
& "dbo.T_Missions_Acteurs ON" _
& "dbo.T_Missions.ID = dbo.T_Missions_Acteurs.ID_Mission"
adoRecordset.Open
Do Until adoRecordset.EOF
strFirst = adoRecordset.Fields("dbo.T_Missions.Libellé").Value
strLast = adoRecordset.Fields("dbo.T_Missions.Numéro").Value
Wscript.Echo strFirst & " " & strLast
adoRecordset.MoveNext
Loop
adoRecordset.Close

RESULTAT : Fenêtre d'erreur avec titre : Windows Script Host (tiens je
croyais que c'était du VBscipt ?)
----------------------------------------------------------------
Ligne : 8
Caract. : 1
Erreur : [Microsoft][ODBC SQL Server Driver][SQL Driver]Ligne 1 : Syntaxe
incorrecte vers '.'.
Code : 80040e14
Source : Microsdoft OLE DB Provider for ODBC Drivers
----------------------------------------------------------------

Merci pour votre très précieuse aide.
Bonne journée,

Nicolas.

6 réponses

Avatar
Fred
Dans son message
o.0 nous dit :

Bonjour,

Je tente en vain de faire une requête SQL à partir d'un VBscript dont
voici le code :

Set adoRecordset = CreateObject("ADODB.Recordset")
adoRecordset.ActiveConnection = "DRIVER=SQL
Server;Trusted_Connection=Yes;" _
& "DATABASE=Xpertease;SERVER=EXPERTEASE"
adoRecordset.Source = "SELECT dbo.T_Missions.Libellé,
dbo.T_Missions.Numéro" _
& "FROM dbo.T_Missions INNER JOIN" _
& "dbo.T_Missions_Acteurs ON" _
& "dbo.T_Missions.ID = dbo.T_Missions_Acteurs.ID_Mission"
adoRecordset.Open
Do Until adoRecordset.EOF
strFirst = adoRecordset.Fields("dbo.T_Missions.Libellé").Value
strLast = adoRecordset.Fields("dbo.T_Missions.Numéro").Value
Wscript.Echo strFirst & " " & strLast
adoRecordset.MoveNext
Loop
adoRecordset.Close

RESULTAT : Fenêtre d'erreur avec titre : Windows Script Host (tiens je
croyais que c'était du VBscipt ?)
----------------------------------------------------------------
Ligne : 8
Caract. : 1
Erreur : [Microsoft][ODBC SQL Server Driver][SQL Driver]Ligne 1 :
Syntaxe incorrecte vers '.'.
Code : 80040e14
Source : Microsdoft OLE DB Provider for ODBC Drivers
----------------------------------------------------------------

Merci pour votre très précieuse aide.
Bonne journée,

Nicolas.


Bonjour,
En premier lieu, si c'est un copié/collé de ton code que tu as posté, il
manque un espace à chaque ligne.
Ta requête, une fois concaténée devient :
SELECT dbo.T/...../Missions.NuméroFROM dbo.T_Missions INNER
JOINdbo.T_Missions_Acteurs ON" etc ...
Pas d'espace entre Numéro et FROM, ni entre JOIN et dbo, et ainsi de suite.
Corrige cela et reviens nous dire :-)

--
Fred

Avatar
o.0
OK j'abandonne, merci quand même, j'ai des erreurs vers INNER..
bon bref aucun tutoriel trouvé à ce jour sur les requêtes SQL dans VBS.
C'est desespérant.
Avatar
Fred
Dans le message:%,
OK j'abandonne, merci quand même, j'ai des erreurs vers INNER..
bon bref aucun tutoriel trouvé à ce jour sur les requêtes SQL dans
VBS. C'est desespérant.


Bonjour,
Tu ne vas abandonner si vite :-)
J'ai testé ton code en l'adaptant à ma base. Cela fonctionne parfaitement.
As-tu bien ajouté des espaces partout où cela est nécessaire ?
As-tu d'abord testé ta requête avec, par exemple, l'analyseur de requête de
SQL server ?

Essaie le code suivant pour voir (par copier-coller) :
8<------------------
Set adoRecordset = CreateObject("ADODB.Recordset")
adoRecordset.ActiveConnection = "DRIVER=SQL Server;" _
& "Trusted_Connection=Yes;" _
& "DATABASE=Xpertease;SERVER=EXPERTEASE"

adoRecordset.Source = "SELECT dbo.T_Missions.Libellé," _
& " dbo.T_Missions.Numéro " _
& "FROM dbo.T_Missions INNER JOIN " _
& "dbo.T_Missions_Acteurs ON " _
& "dbo.T_Missions.IDÛo.T_Missions_Acteurs.ID_Mission"

adoRecordset.Open
Do Until adoRecordset.EOF
strFirst = adoRecordset.Fields("dbo.T_Missions.Libellé").Value
strLast = adoRecordset.Fields("dbo.T_Missions.Numéro").Value
Wscript.Echo strFirst & " " & strLast
adoRecordset.MoveNext
Loop
adoRecordset.Close
8<------------------
Je ne vois pas ce qui peut provoquer une erreur vers INNER avec la requête
que tu as postée.
Est-ce exactement la requête ci-dessus qui te provoque cette erreur ?

Sinon, pour simplifier le code vbs, tu peux passer par une procédure
stockée.

--
Fred

Avatar
Stephane D
o.0 wrote:
OK j'abandonne, merci quand même, j'ai des erreurs vers INNER..
T'as tord parce que ca fonctionne très bien. J'ai un script VBS qui

tourne en boucle afin d'intégrer des commandes qui arrivent par mail. Ce
sont des requetes SQL via ODBC.

bon bref aucun tutoriel trouvé à ce jour sur les requêtes SQL dans VBS.
Faut chercher un peu tout de meme.


C'est desespérant.
C'est sur que ca se fait pas tout seul mais si tu cherchers un peu plus,

que tu fais des essais et que tu postes tes problème précis, y'a pas
de raison.

@+ Stephane - du courage

Avatar
o.0
Set adoRecordset = CreateObject("ADODB.Recordset")
adoRecordset.ActiveConnection = "DRIVER=SQL Server;" _
& "Trusted_Connection=Yes;" _
& "DATABASE=Xpertease;SERVER=EXPERTEASE"

adoRecordset.Source = "SELECT dbo.T_Missions.Libellé," _
& " dbo.T_Missions.Numéro " _
& "FROM dbo.T_Missions INNER JOIN " _
& "dbo.T_Missions_Acteurs ON " _
& "dbo.T_Missions.IDÛo.T_Missions_Acteurs.ID_Mission"

adoRecordset.Open
Do Until adoRecordset.EOF
strFirst = adoRecordset.Fields("dbo.T_Missions.Libellé").Value
strLast = adoRecordset.Fields("dbo.T_Missions.Numéro").Value
Wscript.Echo strFirst & " " & strLast
adoRecordset.MoveNext
Loop
adoRecordset.Close


Avec ce code j'ai une erreur à la ligne 14 Caract N° 5 :
Impossible de trouver l'objet dans la cvollection correspondant au nom ou à
la référence ordinale demandé.

?
Avatar
Fred
Dans le message:,
Set adoRecordset = CreateObject("ADODB.Recordset")
adoRecordset.ActiveConnection = "DRIVER=SQL Server;" _
& "Trusted_Connection=Yes;" _
& "DATABASE=Xpertease;SERVER=EXPERTEASE"

adoRecordset.Source = "SELECT dbo.T_Missions.Libellé," _
& " dbo.T_Missions.Numéro " _
& "FROM dbo.T_Missions INNER JOIN " _
& "dbo.T_Missions_Acteurs ON " _
& "dbo.T_Missions.IDÛo.T_Missions_Acteurs.ID_Mission"

adoRecordset.Open
Do Until adoRecordset.EOF
strFirst = adoRecordset.Fields("dbo.T_Missions.Libellé").Value
strLast = adoRecordset.Fields("dbo.T_Missions.Numéro").Value
Wscript.Echo strFirst & " " & strLast
adoRecordset.MoveNext
Loop
adoRecordset.Close


Avec ce code j'ai une erreur à la ligne 14 Caract N° 5 :
Impossible de trouver l'objet dans la cvollection correspondant au
nom ou à la référence ordinale demandé.

?


Ah, il y a du mieux :-)
Essaie avec seulement "Libellé" et non pas "dbo.T_Missions.Libellé"
Je crois que c'est ce que j'avais fait dans mon essai (pour aller plus vite
!)
Sinon, tu peux accéder aux champs par leur index (Fields(0), Fields(1),
etc..)

--
Fred