Leçon 4 : Ajout d'un paramètre à valeurs multiples avec Sélectionner tout
Mis à jour : 12 décembre 2006
Dans cette leçon, vous allez modifier les paramètres SalesOrderID et DayoftheWeek de paramètres à valeur unique en paramètres à valeurs multiples. Les paramètres à valeurs multiples permettent de sélectionner plusieurs valeurs pour un paramètre de rapport. Pour modifier le paramètre de rapport SalesOrderID, vous allez changer la requête pour que le dataset AdventureWorks teste @SalesPersonID dans l'ensemble des valeurs sélectionnées au lieu d'effectuer le test par rapport à une seule valeur et vérifier la propriété à valeurs multiples du paramètre de rapport. Pour modifier le paramètre de rapport DayoftheWeek, vous allez vérifier la propriété à valeurs multiples, définir les valeurs disponibles à partir d'un nouveau dataset et fournir une expression pour les valeurs par défaut. Vous allez créer un nouveau dataset pour fournir des valeurs disponibles au paramètre DayoftheWeek. Enfin, vous allez ajouter une zone de texte au rapport pour afficher les valeurs de paramètres des sélections DayoftheWeek effectuées.
Pour ouvrir le rapport Sales Orders
Dans SQL Server Business Intelligence Development Studio, ouvrez le projet Report Server de didacticiel créé dans la précédente leçon.
Dans l'Explorateur de solutions, double-cliquez sur le rapport Sales Orders. Le rapport s'ouvre en mode Mise en page.
Cliquez sur l'onglet Données.
Pour modifier la requête du dataset afin de tester l'inclusion dans un ensemble de valeurs
Dans la liste déroulante Datasets, choisissez AdventureWorks.
Modifiez la clause WHERE de la requête existante en remplaçant le test d'égalité (
= (@SalesPersonID)
) de@SalesPersonID
par le test d'inclusion(IN (@SalesPersonID)
).Remplacez la chaîne de requête de ce dataset par la requête ci-après.
SELECT S.OrderDate, DATENAME(weekday, S.OrderDate) as Weekday, S.SalesOrderNumber, S.TotalDue, C.FirstName, C.LastName FROM HumanResources.Employee E INNER JOIN Person.Contact C ON E.ContactID = C.ContactID INNER JOIN Sales.SalesOrderHeader S ON E.EmployeeID = S.SalesPersonID WHERE ( S.OrderDate BETWEEN (@StartDate) AND (@EndDate) AND S.SalesPersonID IN (@SalesPersonID) )
Cliquez sur le bouton Exécuter (!). Lorsque vous êtes invité à fournir les paramètres de requête, utilisez le tableau de valeurs suivant. Le Concepteur de requêtes ne prend pas en charge le test des paramètres à valeurs multiples.
@StartDate
20010101
@EndDate
20030101
@SalesPersonID
286
Cliquez sur OK. L'ensemble de résultats retourné pour le commercial Ranjit Varkey Chudakatil s'affiche avec SalesPersonID = 286.
Pour définir les propriétés du paramètre de rapport SalesPersonID
Dans le menu Rapport, sélectionnez Paramètres du rapport. La boîte de dialogue Paramètres du rapport s'ouvre.
Dans le volet Paramètres, sélectionnez SalesPersonID.
Dans la section Propriétés, vérifiez la présence de Valeurs multiples.
Dans la zone de texte Demander, tapez Select Sales Persons: (Sélectionner les commerciaux :).
Cliquez sur OK.
Cliquez sur l'onglet Aperçu. Le rapport affiche une liste déroulante avec les noms des commerciaux.
Remarque : |
---|
Une valeur (Sélectionner tout) est fournie comme première valeur d'une liste déroulante des valeurs disponibles pour un paramètre à valeurs multiples. Utilisez cette case à cocher pour activer ou désactiver l'ensemble des valeurs. |
Remarque : |
---|
L'option Sélectionner tout a été désactivée dans SQL Server 2005 Service Pack 1, mais restaurée dans SQL Server 2005 Service Pack 2. |
Pour ajouter un nouveau dataset pour les valeurs disponibles de DaysoftheWeek
Sous l'onglet Données, dans la liste déroulante Datasets, choisissez <Nouveau dataset>.
Définissez AdventureWorks comme source de données.
Dans le champ Name, tapez WeekDaysfromQuery.
Collez la chaîne de requête ci-après dans le volet de requête.
SET DATEFIRST 1; SELECT DISTINCT DATEPART(weekday, S.OrderDate) as WeekDayNumber, DATENAME(weekday, S.OrderDate) as Weekday FROM Sales.SalesOrderHeader S Order by WeekDayNumber
DATEFIRST
définit le jour à utiliser comme premier jour de la semaine. Par exemple,SET DATEFIRST 7
modifie l'ordre des jours de la semaine de telle sorte que le dimanche constitue le premier jour. Pour plus d'informations, consultez SET DATEFIRST (Transact-SQL).Dans ce didacticiel, le premier jour de la semaine est le lundi.
Cliquez sur OK.
Cliquez sur le bouton Exécuter (!) de la barre d'outils du Concepteur de requêtes. L'ensemble de résultats retourné affiche les nombres ordinaux et les jours de la semaine.
Pour définir les propriétés du paramètre de rapport DayoftheWeek
Dans le menu Rapport, sélectionnez Paramètres du rapport. La boîte de dialogue Paramètres du rapport s'ouvre.
Dans le volet Paramètres, sélectionnez DayoftheWeek. Vous avez créé ce paramètre au cours de la leçon 2.
Dans la section Propriétés, vérifiez la présence de Valeurs multiples.
Dans la zone de texte Demander, tapez Filter on which days of the week: (Filtrer sur les jours suivants :).
Dans la liste déroulante Datasets de la section Valeurs disponibles, sélectionnez WeekDaysfromQuery.
Dans la liste déroulante Champ de valeur, sélectionnez Weekday.
Dans la liste déroulante Champ d'étiquette, sélectionnez Weekday.
Pour les valeurs par défaut, dans la première zone de texte Valeur, tapez Saturday (Samedi) et, dans la seconde zone de texte Valeur, tapez Sunday (Dimanche).
Cliquez sur OK.
Avant de pouvoir afficher un aperçu du rapport, vous devez modifier l'expression du filtre définie pour la région de données de tableau à utiliser dans l'opérateur IN parce que le paramètre DayoftheWeek est désormais à valeurs multiples.
Pour modifier le filtre afin d'utiliser un paramètre à valeurs multiples
En mode Mise en page, sélectionnez le tableau. Le tableau s'affiche avec un contour gris.
Cliquez avec le bouton droit sur le contour du tableau et sélectionnez Propriétés. La boîte de dialogue Propriétés du tableau s'ouvre.
Cliquez sur l'onglet Filtre.
Dans la liste déroulante de la colonne Expression, vérifiez que la valeur est
=Fields!Weekday.Value
.Modifiez l'opérateur en remplaçant le signe égal (=) par In.
Dans la liste déroulante de la zone de texte Valeur, vérifiez que la valeur est
=Parameters!DayoftheWeek.Value
.Cliquez sur OK.
Le filtre du tableau est désormais défini pour comparer la valeur du champ Weekday à la valeur du paramètre DayoftheWeek à l'aide de l'opérateur In. Quand vous choisissez que le paramètre du rapport soit à valeurs multiples, le filtre teste chaque ligne du tableau pour vérifier que le champ Weekday existe dans la collection DayoftheWeek.
Cliquez sur l'onglet Aperçu. Le rapport affiche le paramètre de rapport DaysoftheWeek avec les valeurs par défaut Saturday et Sunday.
Remarque : |
---|
Une valeur (Sélectionner tout), en dehors de l'exception signalée dans une précédente procédure, est fournie comme première valeur d'une liste déroulante des valeurs disponibles pour un paramètre à valeurs multiples. Utilisez cette case à cocher pour activer ou désactiver l'ensemble des valeurs. |
Pour ajouter une zone de texte afin d'afficher les valeurs de paramètres
En mode Mise en page, sélectionnez le tableau. Appuyez plusieurs fois sur la touche BAS pour déplacer le tableau vers le bas et développez la hauteur du rapport.
À partir de la boîte à outils, faites glisser une zone de texte au-dessus du tableau. Sélectionnez un bord de la zone de texte et développez sa largeur pour qu'elle corresponde à celle du tableau.
Collez l'expression suivante dans la zone de texte :
="From " & Parameters!StartDate.Value & " to " & Parameters!EndDate.Value & vbCrLf & "For the following " & Parameters!DayoftheWeek.Count & " days of the week: " & Join(Parameters!DayoftheWeek.Value,", ") & vbCrLf & "First and last selected salespersons: " & Parameters!SalesPersonID.Label(0) & " and " & Parameters!SalesPersonID.Label(Parameters!SalesPersonID.Count-1)
Plusieurs points sont à noter pour cette expression
- Vous pouvez faire référence à l'étiquette du paramètre à la place de sa valeur. Par exemple :
Parameters!SalesPersonID.Label
au lieu deParameters!SalesPersonID.Value
. - Pour adresser un membre particulier d'une collection de paramètres, utilisez l'index de base zéro. Par exemple :
Parameters!SalesPersonID.Label(0)
. - Pour adresser l'ensemble de la collection, n'utilisez aucun index. Par exemple :
Parameters!SalesPersonID.Value
. - Pour rechercher le nombre de valeurs, utilisez
Parameters!SalesPersonID.Count
. - Vous pouvez aussi déterminer si un paramètre est à valeurs multiples. Par exemple :
Parameters!SalesPersonID.IsMultivalue
. - Vous pouvez concaténer toutes les valeurs sélectionnées dans un paramètre à valeurs multiples en utilisant la fonction Visual Basic Join. Par exemple,
Join(Parameters!DayoftheWeek.Value,", ")
.
- Vous pouvez faire référence à l'étiquette du paramètre à la place de sa valeur. Par exemple :
Cliquez sur Aperçu. Vérifiez que lorsque vous cliquez sur Afficher le rapport, la zone de texte affiche les valeurs que vous avez sélectionnées dans les paramètres.
Étapes suivantes
Vous avez modifié avec succès les propriétés des paramètres de rapport de valeur unique en valeurs multiples. Vous avez effectué les modifications nécessaires dans une requête, un filtre et une expression à accueillir, à l'aide d'une collection de paramètres à valeurs multiples. Vous avez appris à utiliser les paramètres à valeurs multiples dans une expression. Dans la prochaine leçon, vous allez apprendre à créer un paramètre booléen pour contrôler la quantité de détails à visualiser dans un rapport. Voir Leçon 5 : Ajout d'un paramètre pour contrôler la visibilité d'une ligne.
Historique des modifications
Version | Historique |
---|---|
12 décembre 2006 |
|
Voir aussi
Tâches
Leçon 1 : Création d'un projet Report Server pour le didacticiel sur les paramètres
Autres ressources
Utilisation de paramètres dans Reporting Services