Question

Je peux déjà utiliser Excel (2007) pour importer des données à partir de SQL Server 2005. J'ajoute une connexion de données et j'entre dans une requête SQL personnalisée qui extrait les données souhaitées. Cool.

Mais ce que j'aimerais ajouter, c’est la possibilité de paramétrer cette requête en fonction d’une valeur trouvée dans une cellule connue de la feuille de calcul.

Ma requête irait de

SELECT * FROM dbo.MyDataTable WHERE Col1 = 'apples'

à quelque chose comme

SELECT * FROM dbo.MyDataTable WHERE Col1 = 'Cell("B2")'

Est-ce possible? Si oui, comment?

Était-ce utile?

La solution

Si vous utilisez MS Query . pour importer les données dans Excel, cette page s'affiche. comment utiliser une valeur d'une cellule de la feuille de calcul en tant que paramètre de votre requête.

Autres conseils

Essayez de structurer votre code comme suit:

Dim strSQL as String
Dim strFruit As String

strFruit = CStr(ThisWorkbook.Sheets("Sheet1").Range("A1").FormulaR1C1)

strSQL = "SELECT * FROM dbo.MyDataTable WHERE Col1 = '" & strFruit & "'"

J'ai trouvé utile de charger le paramètre dans une variable avant de le fusionner dans la requête SQL.

Cela rend votre chaîne SQL plus lisible et vous permet de vérifier / nettoyer le paramètre avant de l'utiliser.

Je n'utilisais pas Excel 2007, mais dans les versions précédentes d'Excel, je déteste vraiment l'intégration de SQL Query. En particulier, j’ai eu du mal à faire exactement ce que vous demandez sans avoir recours au piratage informatique d’une série de codes VBA. J'ai fait des recherches et j'ai finalement décidé d'utiliser le complément de requête Excel de Rob Van Gelder:

http://vangelder.orconhosting.net.nz/excel/queryeditor.html

La section "paramètres" de son interface graphique vous permet de configurer un paramètre et de demander à l'utilitaire de demander à l'utilisateur la valeur ou d'extraire la valeur d'une référence de cellule. Je crois que ce dernier est exactement ce que vous voulez faire. Il a également la capacité d'actualiser automatiquement quand une valeur de cellule change. J'utilise beaucoup la fonction d'actualisation automatique lors de la validation de données dans ma base de données.

J'ai rencontré plusieurs situations dans lesquelles mes requêtes ont été corrompues et je ne pouvais plus les ouvrir ni voir le texte. Par conséquent, je vous recommande de conserver un onglet dans la feuille de calcul Excel pour vos requêtes et de copier le texte des requêtes dans les cellules de cette page spéciale. Ainsi, si l'outil de requête mange vos requêtes, vous n'aurez pas à les reconstruire à partir de zéro.

Un outil tiers, bien que gratuit, pourrait ne pas être ce que vous recherchez, mais il fonctionne bien pour moi. Bonne chance!

Dim SQLString as String

SQLString = "SELECT * FROM dbo.MyDataTable WHERE Col1 = '" & Cells("B2") & "'"

Il serait intéressant de consulter les attaques par injection SQL pour voir les inconvénients de cette approche, mais ce n'est peut-être pas nécessairement une considération pour ce que vous devez faire

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top