J'utilise souvent Get External Data
pour créer des rapports simples - exécuter des requêtes sur des bases de données et s’afficher parfaitement dans Excel. Les fonctionnalités exceptionnelles d'Excel telles que le filtrage et les tableaux croisés dynamiques, ainsi que l'interface familière pour les utilisateurs, le rendent très utile pour cela. Cependant, Microsoft Query présente une limite: vous ne pouvez pas ajouter de paramètres aux requêtes qui ne peuvent pas être affichées graphiquement, ce qui limite considérablement le SQL que vous pouvez écrire.
Existe-t-il une solution à l'erreur "les paramètres ne sont pas autorisés dans les requêtes qui ne peuvent pas être affichées graphiquement"?
Si vous avez Excel 2007, vous pouvez écrire en VBA pour modifier les connexions (c’est-à-dire les requêtes de données externes) dans un classeur et mettre à jour la propriété CommandText. Si vous ajoutez simplement ?
où vous voulez un paramètre, la prochaine fois que vous actualiserez les données, il vous demandera les valeurs pour les connexions! la magie. Lorsque vous examinez les propriétés de la connexion, le bouton Paramètres sera désormais actif et utilisable normalement.
Par exemple. J'écrivais une macro, la parcourais dans le débogueur et lui faisais définir le CommandText de manière appropriée. Une fois que vous avez terminé, vous pouvez supprimer la macro. Il s'agit simplement d'un moyen de mettre à jour la requête.
Sub UpdateQuery
Dim cn As WorkbookConnection
Dim odbcCn As ODBCConnection, oledbCn As OLEDBConnection
For Each cn In ThisWorkbook.Connections
If cn.Type = xlConnectionTypeODBC Then
Set odbcCn = cn.ODBCConnection
' If you do have multiple connections you would want to modify
' the line below each time you run through the loop.
odbcCn.CommandText = "select blah from someTable where blah like ?"
ElseIf cn.Type = xlConnectionTypeOLEDB Then
Set oledbCn = cn.OLEDBConnection
oledbCn.CommandText = "select blah from someTable where blah like ?"
End If
Next
End Sub
L'interface d'Excel pour les requêtes SQL Server ne vous laissera pas de paramètres personnalisés. Une solution consiste à créer une requête générique Microsoft Query, à ajouter des paramètres, puis à coller votre requête paramétrée dans les propriétés de la connexion. Voici les étapes détaillées pour Excel 2010:
Solution de contournement facile (aucun VBA requis)
À partir de là, modifiez directement le code SQL en ajoutant "?" partout où vous voulez un paramètre. Fonctionne de la même manière qu'avant, sauf que vous n'êtes pas harcelé.