web-dev-qa-db-fra.com

Excel: utiliser une valeur de cellule comme paramètre pour une requête SQL

J'utilise MS Excel pour obtenir des données d'une base de données MySQL via ODBC.
J'ai réussi à obtenir des données à l'aide d'une requête SQL. Mais maintenant, je veux que cette requête soit paramétrée.
Je me demande donc s'il est possible d'utiliser une valeur de cellule (une cellule de feuille de calcul) comme paramètre pour une telle requête.
Par exemple, pour cette requête:

select name from user where id=1

Je voudrais obtenir la valeur id de, disons, la cellule D4 dans la feuille de calcul.

Est-ce la bonne approche pour paramétrer une requête? et comment faire?

Merci.

33
GetFree

J'ai eu le même problème que toi, Noboby peut me comprendre, mais je l'ai résolu de cette façon.

SELECT NAME, TELEFONE, DATA
FROM   [sheet1$a1:q633]
WHERE  NAME IN (SELECT * FROM  [sheet2$a1:a2])

vous devez insérer un paramètre dans une autre feuille, le SQL considérera ces informations comme une base de données, alors vous pouvez sélectionner les informations et les comparer dans le paramètre que vous aimez.

34
Joaquim

Si vous utilisez une requête Microsoft, vous pouvez ajouter "?" à votre requête ...

sélectionnez le nom de l'utilisateur où id =?

cela fera apparaître une petite fenêtre demandant la cellule/données/etc lorsque vous revenez à Excel.

Dans la fenêtre contextuelle, vous pouvez également sélectionner "toujours utiliser cette cellule comme paramètre", éliminant ainsi la nécessité de définir cette cellule à chaque fois que vous actualisez vos données. C'est l'option la plus simple.

12
pojomx
queryString = "SELECT name FROM user WHERE id=" & Worksheets("Sheet1").Range("D4").Value
4
barrowc

Le SQL est un peu comme la syntaxe de MS SQL.

SELECT * FROM [table$] WHERE *;

Il est important que le nom de la table se termine par un signe $ et que le tout soit placé entre crochets. Comme conditions, vous pouvez utiliser n'importe quelle valeur, mais jusqu'à présent, Excel ne m'a pas permis d'utiliser ce que j'appelle des "Apostrophes SQL" (´), donc un titre de colonne dans un mot est recommandé.

Si des utilisateurs sont répertoriés dans un tableau intitulé "Utilisateurs" et que l'ID se trouve dans une colonne intitulée "id" et le nom dans une colonne intitulée "Nom", votre requête ressemblera à ceci:

SELECT Name FROM [Users$] WHERE id = 1;

J'espère que cela t'aides.

1
Kat Seiko