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

Query SQL dans un chiffrier Excel

6 réponses
Avatar
François Racine
Est-il possible d'exécuter ce query SQL dans excel et de remplacer
'DataDirectConnectODBC3.60an_v4' par une variable? Je souhaiterais que ma
macro détermine la valeur de la variable et exécute plusieurs fois ce query
SQL.

SELECT v_R_System.Name0, v_R_System.User_Name0,
v_GS_OPERATING_SYSTEM.Description0, v_GS_OPERATING_SYSTEM.Caption0,
v_GS_OPERATING_SYSTEM.CSDVersion0, v_GS_QUIESTU.Contexte0,
v_GS_WORKSTATION_STATUS.LastHWScan, v_GS_XXX___Noyau0.Nom_du_Noyau00,
v_GS_XXX___Noyau0.Version___Majeure00,
v_GS_XXX___Noyau0.Version___Mineure00,
v_GS_XXX___Noyau0.Version___R_vision00
FROM SMS_XXX.dbo.v_GS_OPERATING_SYSTEM v_GS_OPERATING_SYSTEM,
SMS_XXX.dbo.v_GS_QUIESTU v_GS_QUIESTU, SMS_XXX.dbo.v_GS_XXX___Noyau0
v_GS_XXX___Noyau0, SMS_XXX.dbo.v_GS_XXX___Trousses1 v_GS_XXX___Trousses1,
SMS_XXX.dbo.v_GS_WORKSTATION_STATUS v_GS_WORKSTATION_STATUS,
SMS_XXX.dbo.v_R_System v_R_System
WHERE v_R_System.ResourceID = v_GS_XXX___Trousses1.ResourceID AND
v_GS_OPERATING_SYSTEM.ResourceID = v_R_System.ResourceID AND
v_GS_QUIESTU.ResourceID = v_GS_OPERATING_SYSTEM.ResourceID AND
v_GS_WORKSTATION_STATUS.ResourceID = v_GS_QUIESTU.ResourceID AND
v_GS_XXX___Noyau0.ResourceID = v_R_System.ResourceID AND
((v_GS_XXX___Trousses1.Trousse___Nom00='DataDirectConnectODBC3.60an_v4'))

6 réponses

Avatar
Trirème
Bonsoir François,
Tout le script SQL doit être une chaîne de texte bâtie comme ceci :
MonSQL = "SELECT v_R_System.Name0, v_R_System.User_Name0,"
MonSQL = MonSQL & "v_GS_OPERATING_SYSTEM.Description0, v_GS_OPERATING_SYSTEM.Caption0,"
MonSQL = MonSQL & "v_GS_OPERATING_SYSTEM.CSDVersion0, v_GS_QUIESTU.Contexte0,"
...
...
Par conséquent, en ce qui concerne ton problème :
MonSQL = MonSQL & MaVariable avec MaVariable la STRING que tu auras déterminée.

Cordialement,
Trirème

Est-il possible d'exécuter ce query SQL dans excel et de remplacer
'DataDirectConnectODBC3.60an_v4' par une variable? Je souhaiterais que ma
macro détermine la valeur de la variable et exécute plusieurs fois ce query
SQL.

SELECT v_R_System.Name0, v_R_System.User_Name0,
v_GS_OPERATING_SYSTEM.Description0, v_GS_OPERATING_SYSTEM.Caption0,
v_GS_OPERATING_SYSTEM.CSDVersion0, v_GS_QUIESTU.Contexte0,
v_GS_WORKSTATION_STATUS.LastHWScan, v_GS_XXX___Noyau0.Nom_du_Noyau00,
v_GS_XXX___Noyau0.Version___Majeure00,
v_GS_XXX___Noyau0.Version___Mineure00,
v_GS_XXX___Noyau0.Version___R_vision00
FROM SMS_XXX.dbo.v_GS_OPERATING_SYSTEM v_GS_OPERATING_SYSTEM,
SMS_XXX.dbo.v_GS_QUIESTU v_GS_QUIESTU, SMS_XXX.dbo.v_GS_XXX___Noyau0
v_GS_XXX___Noyau0, SMS_XXX.dbo.v_GS_XXX___Trousses1 v_GS_XXX___Trousses1,
SMS_XXX.dbo.v_GS_WORKSTATION_STATUS v_GS_WORKSTATION_STATUS,
SMS_XXX.dbo.v_R_System v_R_System
WHERE v_R_System.ResourceID = v_GS_XXX___Trousses1.ResourceID AND
v_GS_OPERATING_SYSTEM.ResourceID = v_R_System.ResourceID AND
v_GS_QUIESTU.ResourceID = v_GS_OPERATING_SYSTEM.ResourceID AND
v_GS_WORKSTATION_STATUS.ResourceID = v_GS_QUIESTU.ResourceID AND
v_GS_XXX___Noyau0.ResourceID = v_R_System.ResourceID AND
((v_GS_XXX___Trousses1.Trousse___Nom00='DataDirectConnectODBC3.60an_v4'))




Avatar
François Racine
1. Je remarque que tu y vas séquenciellement (progressivement). Ne peut-on
pas tout mettre le string d'un seul coup?
2. Comment on la fait fonctionner avec Excel 2003?

"Trirème" a écrit dans le message de news:
u9nYcE$
Bonsoir François,
Tout le script SQL doit être une chaîne de texte bâtie comme ceci :
MonSQL = "SELECT v_R_System.Name0, v_R_System.User_Name0,"
MonSQL = MonSQL & "v_GS_OPERATING_SYSTEM.Description0,
v_GS_OPERATING_SYSTEM.Caption0,"
MonSQL = MonSQL & "v_GS_OPERATING_SYSTEM.CSDVersion0,
v_GS_QUIESTU.Contexte0,"
...
...
Par conséquent, en ce qui concerne ton problème :
MonSQL = MonSQL & MaVariable avec MaVariable la STRING que tu auras
déterminée.

Cordialement,
Trirème

Est-il possible d'exécuter ce query SQL dans excel et de remplacer
'DataDirectConnectODBC3.60an_v4' par une variable? Je souhaiterais que
ma macro détermine la valeur de la variable et exécute plusieurs fois ce
query SQL.

SELECT v_R_System.Name0, v_R_System.User_Name0,
v_GS_OPERATING_SYSTEM.Description0, v_GS_OPERATING_SYSTEM.Caption0,
v_GS_OPERATING_SYSTEM.CSDVersion0, v_GS_QUIESTU.Contexte0,
v_GS_WORKSTATION_STATUS.LastHWScan, v_GS_XXX___Noyau0.Nom_du_Noyau00,
v_GS_XXX___Noyau0.Version___Majeure00,
v_GS_XXX___Noyau0.Version___Mineure00,
v_GS_XXX___Noyau0.Version___R_vision00
FROM SMS_XXX.dbo.v_GS_OPERATING_SYSTEM v_GS_OPERATING_SYSTEM,
SMS_XXX.dbo.v_GS_QUIESTU v_GS_QUIESTU, SMS_XXX.dbo.v_GS_XXX___Noyau0
v_GS_XXX___Noyau0, SMS_XXX.dbo.v_GS_XXX___Trousses1 v_GS_XXX___Trousses1,
SMS_XXX.dbo.v_GS_WORKSTATION_STATUS v_GS_WORKSTATION_STATUS,
SMS_XXX.dbo.v_R_System v_R_System
WHERE v_R_System.ResourceID = v_GS_XXX___Trousses1.ResourceID AND
v_GS_OPERATING_SYSTEM.ResourceID = v_R_System.ResourceID AND
v_GS_QUIESTU.ResourceID = v_GS_OPERATING_SYSTEM.ResourceID AND
v_GS_WORKSTATION_STATUS.ResourceID = v_GS_QUIESTU.ResourceID AND
v_GS_XXX___Noyau0.ResourceID = v_R_System.ResourceID AND
((v_GS_XXX___Trousses1.Trousse___Nom00='DataDirectConnectODBC3.60an_v4'))




Avatar
François Racine
sqlextract0 = "SELECT v_R_System.Name0, v_R_System.User_Name0,
v_GS_OPERATING_SYSTEM.Description0, v_GS_OPERATING_SYSTEM.Caption0,
v_GS_OPERATING_SYSTEM.CSDVersion0, v_GS_QUIESTU.Contexte0,
v_GS_WORKSTATION_STATUS.LastHWScan, v_GS_xxx___Noyau0.Nom_du_Noyau00,
v_GS_xxx___Noyau0.Version___Majeure00,
v_GS_xxx___Noyau0.Version___Mineure00,
v_GS_xxx___Noyau0.Version___R_vision00,
v_GS_xxx___Trousses1.Trousse___Nom00"

sqlextract1 = " FROM SMS_xxx.dbo.v_GS_OPERATING_SYSTEM
v_GS_OPERATING_SYSTEM, SMS_xxx.dbo.v_GS_QUIESTU v_GS_QUIESTU,
SMS_xxx.dbo.v_GS_xxx___Noyau0 v_GS_xxx___Noyau0,
SMS_xxx.dbo.v_GS_xxx___Trousses1 v_GS_xxx___Trousses1,
SMS_xxx.dbo.v_GS_WORKSTATION_STATUS v_GS_WORKSTATION_STATUS,
SMS_xxx.dbo.v_R_System v_R_System"

sqlextract2 = " WHERE v_R_System.ResourceID =
v_GS_xxx___Trousses1.ResourceID AND v_GS_OPERATING_SYSTEM.ResourceID =
v_R_System.ResourceID AND v_GS_QUIESTU.ResourceID =
v_GS_OPERATING_SYSTEM.ResourceID AND v_GS_WORKSTATION_STATUS.ResourceID =
v_GS_QUIESTU.ResourceID AND v_GS_xxx___Noyau0.ResourceID =
v_R_System.ResourceID AND
((v_GS_xxx___Trousses1.Trousse___Nom00='DataDirectConnectODBC3.60an_v4'))"

sqlextract = sqlextract0 & sqlextract1 & sqlextract2

Je m'aperçois que toute l'information n'est pas affecté au variable. On
dirait qu'après un certain nombre de caractère, il coupe. Que puis-je
faire?

"Trirème" a écrit dans le message de news:
u9nYcE$
Bonsoir François,
Tout le script SQL doit être une chaîne de texte bâtie comme ceci :
MonSQL = "SELECT v_R_System.Name0, v_R_System.User_Name0,"
MonSQL = MonSQL & "v_GS_OPERATING_SYSTEM.Description0,
v_GS_OPERATING_SYSTEM.Caption0,"
MonSQL = MonSQL & "v_GS_OPERATING_SYSTEM.CSDVersion0,
v_GS_QUIESTU.Contexte0,"
...
...
Par conséquent, en ce qui concerne ton problème :
MonSQL = MonSQL & MaVariable avec MaVariable la STRING que tu auras
déterminée.

Cordialement,
Trirème

Est-il possible d'exécuter ce query SQL dans excel et de remplacer
'DataDirectConnectODBC3.60an_v4' par une variable? Je souhaiterais que
ma macro détermine la valeur de la variable et exécute plusieurs fois ce
query SQL.

SELECT v_R_System.Name0, v_R_System.User_Name0,
v_GS_OPERATING_SYSTEM.Description0, v_GS_OPERATING_SYSTEM.Caption0,
v_GS_OPERATING_SYSTEM.CSDVersion0, v_GS_QUIESTU.Contexte0,
v_GS_WORKSTATION_STATUS.LastHWScan, v_GS_XXX___Noyau0.Nom_du_Noyau00,
v_GS_XXX___Noyau0.Version___Majeure00,
v_GS_XXX___Noyau0.Version___Mineure00,
v_GS_XXX___Noyau0.Version___R_vision00
FROM SMS_XXX.dbo.v_GS_OPERATING_SYSTEM v_GS_OPERATING_SYSTEM,
SMS_XXX.dbo.v_GS_QUIESTU v_GS_QUIESTU, SMS_XXX.dbo.v_GS_XXX___Noyau0
v_GS_XXX___Noyau0, SMS_XXX.dbo.v_GS_XXX___Trousses1 v_GS_XXX___Trousses1,
SMS_XXX.dbo.v_GS_WORKSTATION_STATUS v_GS_WORKSTATION_STATUS,
SMS_XXX.dbo.v_R_System v_R_System
WHERE v_R_System.ResourceID = v_GS_XXX___Trousses1.ResourceID AND
v_GS_OPERATING_SYSTEM.ResourceID = v_R_System.ResourceID AND
v_GS_QUIESTU.ResourceID = v_GS_OPERATING_SYSTEM.ResourceID AND
v_GS_WORKSTATION_STATUS.ResourceID = v_GS_QUIESTU.ResourceID AND
v_GS_XXX___Noyau0.ResourceID = v_R_System.ResourceID AND
((v_GS_XXX___Trousses1.Trousse___Nom00='DataDirectConnectODBC3.60an_v4'))




Avatar
François Racine
Oubliez cela!
Est-il possible de passer une commande du genre wscript.echo?

"François Racine" a écrit dans le message de
news:
sqlextract0 = "SELECT v_R_System.Name0, v_R_System.User_Name0,
v_GS_OPERATING_SYSTEM.Description0, v_GS_OPERATING_SYSTEM.Caption0,
v_GS_OPERATING_SYSTEM.CSDVersion0, v_GS_QUIESTU.Contexte0,
v_GS_WORKSTATION_STATUS.LastHWScan, v_GS_xxx___Noyau0.Nom_du_Noyau00,
v_GS_xxx___Noyau0.Version___Majeure00,
v_GS_xxx___Noyau0.Version___Mineure00,
v_GS_xxx___Noyau0.Version___R_vision00,
v_GS_xxx___Trousses1.Trousse___Nom00"

sqlextract1 = " FROM SMS_xxx.dbo.v_GS_OPERATING_SYSTEM
v_GS_OPERATING_SYSTEM, SMS_xxx.dbo.v_GS_QUIESTU v_GS_QUIESTU,
SMS_xxx.dbo.v_GS_xxx___Noyau0 v_GS_xxx___Noyau0,
SMS_xxx.dbo.v_GS_xxx___Trousses1 v_GS_xxx___Trousses1,
SMS_xxx.dbo.v_GS_WORKSTATION_STATUS v_GS_WORKSTATION_STATUS,
SMS_xxx.dbo.v_R_System v_R_System"

sqlextract2 = " WHERE v_R_System.ResourceID =
v_GS_xxx___Trousses1.ResourceID AND v_GS_OPERATING_SYSTEM.ResourceID =
v_R_System.ResourceID AND v_GS_QUIESTU.ResourceID =
v_GS_OPERATING_SYSTEM.ResourceID AND v_GS_WORKSTATION_STATUS.ResourceID =
v_GS_QUIESTU.ResourceID AND v_GS_xxx___Noyau0.ResourceID =
v_R_System.ResourceID AND
((v_GS_xxx___Trousses1.Trousse___Nom00='DataDirectConnectODBC3.60an_v4'))"

sqlextract = sqlextract0 & sqlextract1 & sqlextract2

Je m'aperçois que toute l'information n'est pas affecté au variable. On
dirait qu'après un certain nombre de caractère, il coupe. Que puis-je
faire?

"Trirème" a écrit dans le message de news:
u9nYcE$
Bonsoir François,
Tout le script SQL doit être une chaîne de texte bâtie comme ceci :
MonSQL = "SELECT v_R_System.Name0, v_R_System.User_Name0,"
MonSQL = MonSQL & "v_GS_OPERATING_SYSTEM.Description0,
v_GS_OPERATING_SYSTEM.Caption0,"
MonSQL = MonSQL & "v_GS_OPERATING_SYSTEM.CSDVersion0,
v_GS_QUIESTU.Contexte0,"
...
...
Par conséquent, en ce qui concerne ton problème :
MonSQL = MonSQL & MaVariable avec MaVariable la STRING que tu auras
déterminée.

Cordialement,
Trirème

Est-il possible d'exécuter ce query SQL dans excel et de remplacer
'DataDirectConnectODBC3.60an_v4' par une variable? Je souhaiterais que
ma macro détermine la valeur de la variable et exécute plusieurs fois ce
query SQL.

SELECT v_R_System.Name0, v_R_System.User_Name0,
v_GS_OPERATING_SYSTEM.Description0, v_GS_OPERATING_SYSTEM.Caption0,
v_GS_OPERATING_SYSTEM.CSDVersion0, v_GS_QUIESTU.Contexte0,
v_GS_WORKSTATION_STATUS.LastHWScan, v_GS_XXX___Noyau0.Nom_du_Noyau00,
v_GS_XXX___Noyau0.Version___Majeure00,
v_GS_XXX___Noyau0.Version___Mineure00,
v_GS_XXX___Noyau0.Version___R_vision00
FROM SMS_XXX.dbo.v_GS_OPERATING_SYSTEM v_GS_OPERATING_SYSTEM,
SMS_XXX.dbo.v_GS_QUIESTU v_GS_QUIESTU, SMS_XXX.dbo.v_GS_XXX___Noyau0
v_GS_XXX___Noyau0, SMS_XXX.dbo.v_GS_XXX___Trousses1
v_GS_XXX___Trousses1, SMS_XXX.dbo.v_GS_WORKSTATION_STATUS
v_GS_WORKSTATION_STATUS, SMS_XXX.dbo.v_R_System v_R_System
WHERE v_R_System.ResourceID = v_GS_XXX___Trousses1.ResourceID AND
v_GS_OPERATING_SYSTEM.ResourceID = v_R_System.ResourceID AND
v_GS_QUIESTU.ResourceID = v_GS_OPERATING_SYSTEM.ResourceID AND
v_GS_WORKSTATION_STATUS.ResourceID = v_GS_QUIESTU.ResourceID AND
v_GS_XXX___Noyau0.ResourceID = v_R_System.ResourceID AND
((v_GS_XXX___Trousses1.Trousse___Nom00='DataDirectConnectODBC3.60an_v4'))








Avatar
Trirème
Bonjour,
Les variables STRING de VBA admettent des longueurs largement supérieures à
un script SQL.

Extrait de l'aide de VBA :
String, type de données
Il existe deux types de chaînes : les chaînes de longueur variable et les
chaînes de longueur fixe.
Les chaînes de longueur variable peuvent contenir environ 2 milliards (2^31)
de caractères.
Les chaînes de longueur fixe peuvent contenir de 1 à environ 64 Ko (2^16) de
caractères.

2. Comment on la fait fonctionner avec Excel 2003?


Avec Excel 2003 particulièrement je sais pas, mais un exemple tiré de l'aide
de VBA :

Dim qt As QueryTable
sqlstring = "select 96Sales.totals from 96Sales where profit < 5"
connstring = _
"ODBC;DSN–SalesData;UID=Rep21;PWD=NUyHwYQI;Database–Sales"
With ActiveSheet.QueryTables.Add(Connection:=connstring, _
Destination:=Range("B1"), Sql:=sqlstring)
.Refresh
End With

Un autre exemple (voir à 'CommandText') :
extrait de l'aide de VBA)
Exemple
Cet exemple montre comment définir la chaîne de commande de la source de
données ODBC de la première table de requête. Notez que la chaîne de commande
constitue une instruction SQL.

Set qtQtrResults = _
Workbooks(1).Worksheets(1).QueryTables(1)
With qtQtrResults
.CommandType = xlCmdSQL
.CommandText = _
"Select ProductID From Products Where ProductID < 10"
.Refresh
End With


Cordialement,
Trirème

Avatar
François Racine
Merci!
"Trirème" a écrit dans le message de news:

Bonjour,
Les variables STRING de VBA admettent des longueurs largement supérieures
à
un script SQL.

Extrait de l'aide de VBA :
String, type de données
Il existe deux types de chaînes : les chaînes de longueur variable et les
chaînes de longueur fixe.
Les chaînes de longueur variable peuvent contenir environ 2 milliards
(2^31)
de caractères.
Les chaînes de longueur fixe peuvent contenir de 1 à environ 64 Ko (2^16)
de
caractères.

2. Comment on la fait fonctionner avec Excel 2003?


Avec Excel 2003 particulièrement je sais pas, mais un exemple tiré de
l'aide
de VBA :

Dim qt As QueryTable
sqlstring = "select 96Sales.totals from 96Sales where profit < 5"
connstring = _
"ODBC;DSN–SalesData;UID=Rep21;PWD=NUyHwYQI;Database–Sales"
With ActiveSheet.QueryTables.Add(Connection:=connstring, _
Destination:=Range("B1"), Sql:=sqlstring)
.Refresh
End With

Un autre exemple (voir à 'CommandText') :
extrait de l'aide de VBA)
Exemple
Cet exemple montre comment définir la chaîne de commande de la source de
données ODBC de la première table de requête. Notez que la chaîne de
commande
constitue une instruction SQL.

Set qtQtrResults = _
Workbooks(1).Worksheets(1).QueryTables(1)
With qtQtrResults
.CommandType = xlCmdSQL
.CommandText = _
"Select ProductID From Products Where ProductID < 10"
.Refresh
End With


Cordialement,
Trirème