Leçon 1 : Ajout de paramètres pour filtrer les rapports par date
En incluant des paramètres de date de début et de fin dans une requête de votre rapport, vous pouvez spécifier une plage de dates qui réduit les données extraites de la source de données. Vous pouvez créer des paramètres supplémentaires pour filtrer les données une fois qu'elles ont été extraites de la source de données.
Dans cette leçon, vous allez ajouter les paramètres @StartDate et @EndDate à la requête pour réduire les données extraites de la source de données. Les deux paramètres de rapport StartDate et EndDate se créent automatiquement et s'affichent dans le volet Données du rapport. Les paramètres respectent la casse. Les paramètres de requête commencent par le symbole @ (ce qui n'est pas le cas pour les paramètres de rapport).
Vous allez définir DateTime comme type de données des paramètres et faire en sorte qu'un contrôle calendrier s'affiche avec la zone de texte du paramètre dans la barre d'outils de la Visionneuse de rapports. Vous allez définir les valeurs par défaut des paramètres pour que le rapport puisse s'exécuter automatiquement. Enfin, vous allez créer un paramètre de rapport DayofWeek qui n'est pas lié à un paramètre de requête et l'utiliser pour filtrer les données une fois que celles-ci ont été extraites de la source de données.
Avant de commencer ce didacticiel, vous devez avoir terminé le Didacticiel : création d'un rapport de tableau de base.
Pour ouvrir un projet Report Server existant
Cliquez sur Démarrer, pointez sur Tous les programmes, sur Microsoft SQL Server 2008 et cliquez sur Business Intelligence Development Studio.
Dans le menu Fichier, pointez sur Ouvrir et cliquez sur Projet/Solution.
Accédez à Tutorial.sln. Il s'agit du didacticiel qui a été créé dans le Didacticiel : création d'un rapport de tableau de base.
Cliquez sur OK pour ouvrir le projet. Le projet Tutorial, qui contient un rapport intitulé Sales Orders.rdl, s'affiche dans l'Explorateur de solutions.
Remarque Si la fenêtre Explorateur de solutions n'est pas visible, cliquez sur Explorateur de solutions dans le menu Affichage.
Pour convertir une source de données incorporée en source de données partagée
Dans le volet Données du rapport, cliquez avec le bouton droit sur la source de données AdventureWorks et sélectionnez Convertir en source de données partagée. Une source de données appelée AdventureWorks.rds est ajoutée dans l'Explorateur de solutions.
Dans le volet Données du rapport, cliquez avec le bouton droit sur la source de données AdventureWorks et sélectionnez Propriétés de la source de données.
Dans le champ Nom, tapez AdventureWorks_Ref.
Cliquez sur OK.
Pour remplacer le dataset existant
Dans le volet Données du rapport, cliquez avec le bouton droit sur le dataset AdventureWorksDataset, puis cliquez sur Propriétés du dataset.
[!REMARQUE]
Si le volet Données du rapport n'est pas visible, cliquez sur Données du rapport dans le menu Affichage.
Dans la liste Source de données, vérifiez que AdventureWorks_Ref est sélectionné.
Dans Type de requête, vérifiez que Texte est sélectionné.
Cliquez sur le bouton Concepteur de requêtes pour ouvrir le concepteur de requêtes.
Remplacez le texte par la requête suivante dans la zone de texte.
SELECT soh.OrderDate AS [Date], soh.SalesOrderNumber AS [Order], pps.Name AS Subcat, pp.Name as Product, SUM(sd.OrderQty) AS Qty, SUM(sd.LineTotal) AS LineTotal FROM Sales.SalesPerson sp INNER JOIN Sales.SalesOrderHeader AS soh ON sp.BusinessEntityID = soh.SalesPersonID INNER JOIN Sales.SalesOrderDetail AS sd ON sd.SalesOrderID = soh.SalesOrderID INNER JOIN Production.Product AS pp ON sd.ProductID = pp.ProductID INNER JOIN Production.ProductSubcategory AS pps ON pp.ProductSubcategoryID = pps.ProductSubcategoryID INNER JOIN Production.ProductCategory AS ppc ON ppc.ProductCategoryID = pps.ProductCategoryID GROUP BY ppc.Name, soh.OrderDate, soh.SalesOrderNumber, pps.Name, pp.Name, soh.SalesPersonID HAVING (ppc.Name = 'Clothing' AND (soh.OrderDate BETWEEN (@StartDate) AND (@EndDate)))
Il s'agit de la même requête que précédemment, à la différence près qu'une condition avec deux paramètres de limitation a été ajoutée :
AND (soh.OrderDate BETWEEN (@StartDate) AND (@EndDate))
Cliquez sur le bouton Exécuter (!) de la barre d'outils. Vous êtes invité à définir les valeurs des paramètres dans la boîte de dialogue Définir les paramètres de la requête qui s'ouvre.
Indiquez deux valeurs pour afficher un jeu de résultats filtré :
Dans la colonne Valeur du paramètre, entrez une valeur pour @StartDate, (20010101, par exemple).
Dans la colonne Valeur du paramètre, entrez une valeur pour @EndDate (20030101, par exemple).
Cliquez sur OK.
Le jeu de résultats affiche un dataset filtré pour les commandes des années 2001 et 2002.
Cliquez deux fois sur OK. Le volet Données du rapport est rempli avec les champs du dataset. Notez également que les deux paramètres de rapport StartDate et EndDate se créent automatiquement et s'affichent sous le nœud Paramètres.
Une fois les paramètres de requête du rapport défini, vous devez modifier le type de données des paramètres de rapport pour qu'il corresponde au type de données des données sources. La valeur par défaut est Texte et elle est mappée au type de données String dans la plupart des sources de données. Si des données sources sont numériques, booléennes ou de type date/heure, vous devez modifier le type de données de paramètre de rapport.
Pour modifier le type de données et les valeurs par défaut d'un paramètre de rapport
Dans le volet Données du rapport, développez Paramètres et double-cliquez sur StartDate. La boîte de dialogue Propriétés du paramètre de rapport s'ouvre.
Vérifiez que le nom du paramètre est StartDate et que l'invite est Start Date.
Dans Type de données, sélectionnez Date/Heure.
Cliquez sur OK.
Dans le volet Données du rapport, double-cliquez sur EndDate. Vérifiez les valeurs du nom et de l'invite.
Dans Type de données, sélectionnez Date/Heure.
Cliquez sur OK.
Cliquez sur Aperçu. Les paramètres StartDate et EndDate apparaissent chacun dans la barre d'outils du rapport avec un contrôle calendrier. Les contrôles calendrier s'affichent automatiquement lorsque le type de données du paramètre est Date/Time et que vous n'avez pas défini de liste de valeurs disponibles. Si vous avez défini une liste de valeurs disponibles, une liste déroulante de valeurs s'affiche à la place.
Indiquez deux valeurs de paramètre pour exécuter le rapport :
Dans la zone de texte du paramètre StartDate, entrez la date 2001-01-01.
Dans la zone de texte du paramètre EndDate, entrez la date 2003-01-01.
Cliquez sur Afficher le rapport. Le rapport n'affiche que les données qui sont comprises dans l'intervalle des valeurs des paramètres de rapport.
Une fois les paramètres de requête du rapport créés, vous pouvez ajouter les valeurs par défaut de ces paramètres. Les paramètres par défaut permettent au rapport de s'exécuter automatiquement ; sinon, l'utilisateur doit entrer les valeurs des paramètres pour que le rapport s'exécute.
Pour définir les valeurs par défaut des paramètres
En mode Conception, dans le volet Données du rapport, développez Paramètres et double-cliquez sur StartDate. La boîte de dialogue Propriétés du paramètre de rapport s'ouvre.
Cliquez sur Valeurs par défaut.
Sélectionnez l'option Spécifier les valeurs. Le bouton Ajouter et une grille Valeur vide apparaissent.
Cliquez sur Ajouter. Une ligne vide est ajoutée à la grille.
Cliquez dans la zone de texte Valeur et supprimez le texte par défaut (Null).
Tapez 2001-01-01. Cliquez sur OK.
Dans le volet Données du rapport, double-cliquez sur EndDate.
Cliquez sur Valeurs par défaut.
Sélectionnez l'option Spécifier les valeurs.
Cliquez sur Ajouter.
Tapez 2003-01-01. Cliquez sur OK.
Cliquez sur Aperçu. Le rapport s'exécute immédiatement car des valeurs par défaut ont été définies pour tous les paramètres.
Pour ajouter un nouveau champ à la requête utilisée pour le filtrage
Passez en mode Conception.
Cliquez avec le bouton droit sur le dataset AdventureWorksDataset et sélectionnez Propriétés du dataset. Ouvrez le concepteur de requêtes et remplacez la requête par la requête suivante :
SELECT soh.OrderDate AS [Date], DATENAME(weekday, soh.OrderDate) as Weekday, soh.SalesOrderNumber AS [Order], pps.Name AS Subcat, pp.Name as Product, SUM(sd.OrderQty) AS Qty, SUM(sd.LineTotal) AS LineTotal FROM Sales.SalesPerson sp INNER JOIN Sales.SalesOrderHeader AS soh ON sp.BusinessEntityID = soh.SalesPersonID INNER JOIN Sales.SalesOrderDetail AS sd ON sd.SalesOrderID = soh.SalesOrderID INNER JOIN Production.Product AS pp ON sd.ProductID = pp.ProductID INNER JOIN Production.ProductSubcategory AS pps ON pp.ProductSubcategoryID = pps.ProductSubcategoryID INNER JOIN Production.ProductCategory AS ppc ON ppc.ProductCategoryID = pps.ProductCategoryID GROUP BY ppc.Name, soh.OrderDate, soh.SalesOrderNumber, pps.Name, pp.Name, soh.SalesPersonID HAVING (ppc.Name = 'Clothing' AND (soh.OrderDate BETWEEN (@StartDate) AND (@EndDate)))
Dans la requête, vous pouvez définir une colonne calculée supplémentaire pour le jour de la semaine où une vente intervient en ajoutant la commande suivante à l'instruction SELECT :
DATENAME(weekday, soh.OrderDate) as Weekday.
Cliquez sur Exécuter (!). La boîte de dialogue Définir les paramètres de la requête s'affiche.
Dans la colonne Valeur du paramètre, entrez une valeur pour @StartDate, (20010101, par exemple).
Dans la colonne Valeur du paramètre, entrez une valeur pour @EndDate (20030101, par exemple).
Cliquez sur OK. Une nouvelle colonne doit s'afficher dans le jeu de résultats portant l'étiquette Weekday.
Cliquez deux fois sur OK. Dans le volet Données du rapport, vérifiez que Weekday est un champ.
(Facultatif) Pour mettre en forme la date dans des données de table qui seront filtrées
Cliquez sur l'onglet Conception.
Cliquez avec le bouton droit sur la cellule qui contient l'expression de champ [Date] et cliquez sur Propriétés de la zone de texte.
Cliquez sur Nombre puis, dans le champ Catégorie, sélectionnez Date.
Dans la zone Type, sélectionnez Monday, January 31, 2000.
Cliquez sur OK.
Pour ajouter un nouveau paramètre de rapport
En mode Conception, dans le volet Données du rapport, cliquez sur Nouveau, puis cliquez sur Paramètre. La boîte de dialogue Propriétés du paramètre de rapport s'ouvre.
Dans Nom, tapez DayoftheWeek.
Dans Invite, tapez Filtrer sur le jour de la semaine :.
Vérifiez que le type de données est Text.
Cliquez sur Valeurs par défaut.
Sélectionnez l'option Spécifier les valeurs. Le bouton Ajouter et une grille Valeur vide apparaissent.
Cliquez sur Ajouter.
Tapez Friday.
Cliquez sur OK.
Pour définir un filtre de table avec une expression de paramètre
En mode Conception, cliquez avec le bouton droit sur un descripteur de ligne ou de colonne de la table et sélectionnez Propriétés du tableau matriciel.
[!REMARQUE]
La région de données de table est un modèle qui repose sur une région de données de tableau matriciel.
Cliquez sur Filtres. Une grille de filtre vide apparaît.
Cliquez sur Ajouter. Une ligne vide est ajoutée à la grille.
Dans Expression, sélectionnez [Weekday] dans la liste déroulante.
Vérifiez que le signe égal (=) est affiché dans Opérateur.
Cliquez sur le bouton d'expression (fx) situé à côté de la zone de texte Valeur. La boîte de dialogue Expression s'affiche.
Dans Catégorie, cliquez sur Paramètres. La liste des paramètres actuels s'affiche dans le volet Valeurs. Double-cliquez sur DayoftheWeek. L'expression de paramètre est ajoutée à la zone de texte de l'expression. L'expression suivante apparaît maintenant dans la zone de texte de l'expression : =Parameters!DayoftheWeek.Value.
Cliquez sur OK. Cliquez sur OK pour quitter la boîte de dialogue Propriétés du tableau matriciel.
Le filtre de la table est maintenant défini pour comparer la valeur du champ Weekday à la valeur de paramètre de DayoftheWeek. Par exemple, lorsque vous entrez la valeur Friday dans la barre d'outils du rapport pour DayoftheWeek, le processeur de rapports ne traite que les lignes de la table où le champ Weekday a pour valeur Friday.
Cliquez sur Aperçu. Comme tous les paramètres possèdent des valeurs par défaut, le rapport s'exécute automatiquement. La table n'affiche que les valeurs qui sont comprises dans la plage de dates définie par StartDate et EndDate et qui tombent un vendredi (Friday).
Étapes suivantes
Vous avez défini avec succès des paramètres de requête et des paramètres de rapport, leurs valeurs par défaut, ainsi qu'un filtre pour la table. Dans la prochaine leçon, vous allez apprendre à créer une liste de valeurs disponibles, ou valeurs valides, pour un paramètre. Consultez Leçon 2 : Ajout de paramètres pour créer une liste de valeurs disponibles.