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

J'utilise MS Excel pour obtenir des données à partir D'une base de données MySQL via ODBC.

J'obtiens avec succès des données en utilisant 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 tableur) comme paramètre pour une telle requête.

Par exemple, pour cette requête:

select name from user where id=1

j'aimerais obtenir la valeur id de, disons, la cellule D4 dans le tableur.

c'Est que la bonne approche pour paramétrer une requête? et comment puis-je le faire?

Merci.

29
demandé sur GetFree 2009-08-17 03:58:34

4 réponses

j'ai eu le même problème que toi, Personne ne 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 cette information comme base de données, puis vous pouvez sélectionner les informations et de les comparer en paramètre que vous aimez.

30
répondu Joaquim 2011-10-05 22:24:20

Si vous utilisez microsoft query, vous pouvez ajouter "?"à votre requête...

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

cela fera apparaître une petite fenêtre demandant la cellule/données/etc Lorsque vous retournez à excel.

dans la fenêtre popup, vous pouvez également sélectionner "Toujours utiliser cette cellule comme paramètre" éliminant la nécessité de définir cette cellule chaque fois que vous rafraîchissez vos données. C'est l'option la plus facile.

10
répondu pojomx 2013-10-03 10:00:01
queryString = "SELECT name FROM user WHERE id=" & Worksheets("Sheet1").Range("D4").Value
4
répondu barrowc 2009-08-17 01:01:59

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 tout soit mis entre parenthèses. 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 "SQL Apostrophes" (), donc un titre de colonne dans un mot est recommandé.

Si vous avez les utilisateurs listés dans un tableau appelé "Utilisateurs", et que l'id est dans une colonne intitulée "id" et le nom dans une colonne intitulée "Nom", votre la requête devrait ressembler à ceci:

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

J'espère que cela vous aidera.

1
répondu Kat Seiko 2012-11-01 15:59:33