Utilisation de paramètres de requête avec des sources de données spécifiques (Reporting Services)
Lorsque vous définissez une requête pour un dataset, vous choisissez le type de source de données. Le type de sources de données spécifie l'extension pour le traitement des données ou le fournisseur de données .NET Framework inscrit permettant d'établir une connexion à la source de données. Le fournisseur de données est la couche logicielle qui interagit avec la source de données et détermine le type de prise en charge des variables dans une requête. Cette rubrique explique comment, pour un jeu de résultats donné, une requête change en fonction de la source de données à laquelle vous êtes connecté, et elle indique si une variable est présente dans la requête.
Variables de requête et fournisseurs de données
Le tableau suivant présente les résultats de données issues de l'exemple de base de données AdventureWorks. Vous pouvez créer ce jeu de résultats en exécutant une requête Transact-SQL sur l'exemple de base de données AdventureWorks ou une requête MDX sur le cube Adventure Works déployé dans les exemples de rapports AdventureWorks. Le jeu de résultats présente deux colonnes : le nom des modèles de produit contenant le mot « Mountain » et le nombre correspondant de ventes par Internet.
Nom |
Ventes par Internet |
---|---|
Fender Set - Mountain |
2121 |
HL Mountain Tire |
1396 |
LL Mountain Tire |
862 |
ML Mountain Tire |
1161 |
Mountain Bottle Cage (Porte-bouteille Mountain) |
2025 |
Mountain Tire Tube (Chambre à air VTT) |
3095 |
Mountain-100 |
396 |
Mountain-200 |
3552 |
Mountain-400-W |
543 |
Mountain-500 |
479 |
Women's Mountain Shorts (Shorts féminins Mountain) |
1019 |
Dans les sections suivantes, vous découvrirez la requête utilisée pour créer ce jeu de résultats, tout d'abord à partir d'une base de données relationnelle, puis à partir d'une base de données multidimensionnelle.
Sources de données d'une base de données relationnelle
Pour une base de données relationnelle telle que MicrosoftSQL Server, vous pouvez créer des requêtes à l'aide de Transact-SQL. Bien que cette requête limite les résultats en incluant une clause WHERE qui est définie à une valeur codée en dur, la requête ne contient pas encore de variable.
Requête Transact-SQL |
---|
SELECT PM.Name, Count(*) as InternetSales FROM Sales.SalesOrderHeader SOH INNER JOIN Sales.SalesOrderDetail SOD ON SOH.SalesOrderID = SOD.SalesOrderID INNER JOIN Production.Product PP ON SOD.ProductID = PP.ProductID INNER JOIN Production.ProductModel PM ON PP.ProductModelId = PM.ProductModelID WHERE (SOH.OnLineOrderFlag = 1 AND PM.Name LIKE ('%Mountain%')) GROUP BY PM.Name ORDER BY PM.Name |
Pour ajouter une variable pour le nom du modèle de produit, PM.Name, vous devez spécifier un paramètre de requête dans la clause WHERE. Le tableau suivant indique comment spécifier des paramètres de requête pour différents fournisseurs de données. Le fournisseur de données est automatiquement sélectionné pour vous lorsque vous choisissez le type de source de données. La chaîne de connexion de ce fournisseur de données est indiquée dans la deuxième colonne. La requête dans le tableau est identique à la requête ci-dessus, mais elle intègre un paramètre au format pris en charge par le fournisseur de données.
Type de source de données |
Fournisseur de données |
Requête |
---|---|---|
MicrosoftSQL Server |
MicrosoftSQL Server (SqlClient) Chaîne de connexion : Data Source=.;Initial Catalog=AdventureWorks |
SELECT PM.Name, Count(*) FROM Sales.SalesOrderHeader SOH INNER JOIN Sales.SalesOrderDetail SOD ON SOH.SalesOrderID = SOD.SalesOrderID INNER JOIN Production.Product PP ON SOD.ProductID = PP.ProductID INNER JOIN Production.ProductModel PM ON PP.ProductModelId = PM.ProductModelID WHERE (SOH.OnLineOrderFlag = 1 AND (PM.Name LIKE '%' + @Mountain + '%')) GROUP BY PM.Name ORDER BY PM.Name |
OLE DB |
Fournisseur Microsoft OLE DB pour SQL Server Chaîne de connexion : Provider=SQLOLEDB.1;Data Source=.;Initial Catalog=AdventureWorks |
SELECT PM.Name, Count(*) FROM Sales.SalesOrderHeader SOH INNER JOIN Sales.SalesOrderDetail SOD ON SOH.SalesOrderID = SOD.SalesOrderID INNER JOIN Production.Product PP ON SOD.ProductID = PP.ProductID INNER JOIN Production.ProductModel PM ON PP.ProductModelId = PM.ProductModelID WHERE ((SOH.OnLineOrderFlag = 1) AND PM.Name LIKE ('%' + ? + '%')) GROUP BY PM.Name ORDER BY PM.Name |
Oracle |
MicrosoftSQL Server (OracleClient) |
SELECT PM.Name, Count(*) FROM Sales.SalesOrderHeader SOH INNER JOIN Sales.SalesOrderDetail SOD ON SOH.SalesOrderID = SOD.SalesOrderID INNER JOIN Production.Product PP ON SOD.ProductID = PP.ProductID INNER JOIN Production.ProductModel PM ON PP.ProductModelId = PM.ProductModelID WHERE ((SOH.OnLineOrderFlag = 1) AND PM.Name LIKE '%' + :1 + '%') GROUP BY PM.Name ORDER BY PM.Name |
OLE DB |
Tout fournisseur de données .NET Framework inscrit |
Spécifique au fournisseur. |
Dans ces exemples, une variable a été ajoutée à la clause WHERE de la requête ; par conséquent, le test du mot « Mountain » a été remplacé par un test de la valeur de la variable.
Le fournisseur de données .NET pour SQL Server gère les variables nommées qui commencent par le signe @. Par exemple, PM.Name LIKE '%' + @Mountain + '%').
Le fournisseur de données OLE DB pour SQL Server ne gère pas les variables nommées. Utilisez le point d'interrogation (?) pour spécifier une variable. Les paramètres transmis au fournisseur OLE DB doivent être transmis selon leur ordre d'apparition dans la clause WHERE. Par exemple, PM.Name LIKE ('%' + ? + '%').
Le fournisseur de données .NET pour Oracle gère les paramètres numérotés qui commencent par le signe deux-points (:). Par exemple, PM.Name LIKE '%' + :1 + '%').
La prise en charge de variables par d'autres fournisseurs de données OLE DB est spécifique au fournisseur de données. Consultez la documentation du fournisseur de données pour obtenir plus d'informations.
Le concepteur de requêtes associé à un type de source de données crée un paramètre de requête pour chaque variable identifiée. Ces paramètres de requête sont répertoriés sous l'onglet Paramètre des pages de propriétés Dataset. Pour chaque paramètre de requête, un paramètre de rapport de type Chaîne est créé. Les valeurs des paramètres de requête stipulées pour le dataset sont définies au paramètre de rapport correspondant. Vous pouvez modifier le type de données des paramètres de rapport et d'autres propriétés dans la boîte de dialogue Propriétés du rapport, que vous pouvez ouvrir à partir du menu Rapport en mode Données. Vous pouvez également créer, modifier ou supprimer ces paramètres de requête manuellement. Pour plus d'informations, consultez Boîte de dialogue Propriétés du dataset, Paramètres.
Sources de données d'une base de données multidimensionnelle
Pour une base de données multidimensionnelle telle que Analysis Services, vous pouvez créer des requêtes à l'aide de MDX. Bien que cette requête limite les résultats en incluant une clause Filtre définie à une valeur codée en dur, la requête ne contient pas encore de variable.
Requête MDX |
---|
SELECT NON EMPTY { [Measures].[Internet Order Count] } ON COLUMNS, NON EMPTY { ([Product].[Model Name].[Model Name].ALLMEMBERS ) } DIMENSION PROPERTIES MEMBER_CAPTION, MEMBER_UNIQUE_NAME ON ROWS FROM ( SELECT ( Filter( [Product].[Model Name].[Model Name].ALLMEMBERS, Instr([Product].[Model Name].currentmember.Properties( 'Member_Caption' ), 'Mountain' ) > 0 ) ) ON COLUMNS FROM [Adventure Works]) CELL PROPERTIES VALUE, BACK_COLOR, FORE_COLOR, FORMATTED_VALUE, FORMAT_STRING, FONT_NAME, FONT_SIZE, FONT_FLAGS |
Pour ajouter une variable pour le nom du modèle de produit, @ProductModelName, vous devez ajouter une clause FILTER. Le tableau suivant indique que, pour les bases de données multidimensionnelles, les variables font partie d'une clause FILTER. Le type de source de données est la valeur que vous choisissez dans la liste déroulante lorsque vous créez une source de données pour Reporting Services. Le fournisseur de données est automatiquement sélectionné pour vous lorsque vous choisissez le type de source de données. La chaîne de connexion de ce fournisseur de données est également indiquée dans la deuxième colonne. La requête dans le tableau est identique à la requête ci-dessus, mais elle intègre un paramètre au format pris en charge par le fournisseur de données.
Type de source de données |
Fournisseur de données |
Requête |
---|---|---|
MicrosoftSQL ServerAnalysis Services |
SQL ServerAnalysis Services (AdomdClient) Chaîne de connexion : Data Source=.;Initial Catalog="Adventure Works DW" |
SELECT NON EMPTY { [Measures].[Internet Order Count] } ON COLUMNS, NON EMPTY { ([Product].[Model Name].[Model Name].ALLMEMBERS ) } DIMENSION PROPERTIES MEMBER_CAPTION, MEMBER_UNIQUE_NAME ON ROWS FROM ( SELECT ( Filter( [Product].[Model Name].[Model Name].ALLMEMBERS, Instr( [Product].[Model Name].currentmember.Properties( 'Member_Caption' ), @ProductModelName ) > 0 ) ) ON COLUMNS FROM [Adventure Works]) CELL PROPERTIES VALUE, BACK_COLOR, FORE_COLOR, FORMATTED_VALUE, FORMAT_STRING, FONT_NAME, FONT_SIZE, FONT_FLAGS |
OLE DB |
Fournisseur Microsoft OLE DB pour Analysis Services 9.0 Chaîne de connexion : Provider=MSOLAP.3;Data Source=.;Initial Catalog="Adventure Works DW" |
OLE DB pour OLAP ne gère pas les requêtes paramétrées. Des solutions de contournement sont décrites dans le Livre blanc intitulé « Integrating Analysis Services with Reporting Services » (Intégration d'Analysis Services à Reporting Services). |
Dans ces exemples, une variable a été ajoutée à la clause WHERE de la requête ; par conséquent, le test du mot « Mountain » a été remplacé par un test de la valeur de la variable.
MicrosoftSQL ServerAnalysis Services prend en charge les paramètres nommés définis dans la section Filtre du concepteur de requêtes MDX. Les variables nommées commencent par le signe @. Par exemple, @ProductModelName.
Le fournisseur Microsoft OLE DB pour Analysis Services 9.0 ne prend pas en charge les requêtes paramétrées. Pour plus d'informations, effectuez une recherche de « Intégration d'Analysis Services à Reporting Services » sur msdn.microsoft.com.
La prise en charge de variables par d'autres fournisseurs de données multidimensionnelles est spécifique au fournisseur de données. Consultez la documentation du fournisseur de données pour obtenir plus d'informations.
Le concepteur de requêtes associé à un type de source de données crée un paramètre de requête pour chaque variable identifiée. Un dataset particulier est créé automatiquement pour fournir des valeurs valides pour chaque paramètre. Ces paramètres de requête sont répertoriés sous l'onglet Paramètre des pages de propriétés Dataset. Pour chaque paramètre de requête, un paramètre de rapport de type Chaîne est créé. Les valeurs des paramètres de requête stipulées pour le dataset sont définies au paramètre de rapport correspondant. Vous pouvez également créer, modifier ou supprimer ces paramètres de dataset manuellement. Pour plus d'informations, consultez Procédure : définir des paramètres dans le Concepteur de requêtes MDX pour Analysis Services.
Les datasets permettant de fournir des valeurs valides pour toutes les requêtes sont créés chaque fois que la requête est traitée.
Voir aussi