Leçon 2 : ajout de paramètres pour créer une liste de valeurs disponibles (Générateur de rapports version 2.0)
Les valeurs disponibles (ou valeurs valides) fournissent à l'utilisateur la liste des valeurs possibles pour un paramètre de rapport. Vous pouvez fournir des valeurs valides à partir d'une requête spécifiquement conçue pour récupérer un ensemble de valeurs de la source de données ou fournir un ensemble prédéfini de valeurs. En liant un ensemble de valeurs disponibles à une requête de dataset qui s'exécute lors du traitement du rapport, vous êtes assuré qu'un utilisateur peut uniquement choisir des valeurs qui existent dans la source de données sous-jacente.
Dans cette leçon, vous allez modifier le rapport Sales Order pour proposer une liste déroulante de noms de commerciaux disponibles à partir de la base de données AdventureWorks2008. Vous allez définir une propriété de table de manière à afficher un message lorsqu'il n'existe aucune ligne dans le jeu de résultats correspondant à la valeur de paramètre sélectionnée. Lorsque vous choisissez un nom et affichez le rapport, celui-ci ne propose que les ventes réalisées par ce commercial.
Pour remplacer la requête de dataset existante
Dans le volet Données du rapport, cliquez avec le bouton droit sur DataSet1, puis cliquez sur Requête. Le concepteur de requêtes s'ouvre.
Dans le volet Requête, remplacez le texte de requête existant par la requête suivante :
SELECT SH.OrderDate ,DATENAME(weekday, SH.OrderDate) as Weekday ,SH.SalesOrderNumber ,SD.OrderQty ,SD.LineTotal ,P.Name AS [Product] ,PS.Name AS [Subcategory] FROM Sales.SalesPerson SP INNER JOIN Sales.SalesOrderHeader AS SH ON SP.BusinessEntityID = SH.SalesPersonID INNER JOIN Sales.SalesOrderDetail AS SD ON SH.SalesOrderID = SD.SalesOrderID INNER JOIN Production.Product AS P ON SD.ProductID = P.ProductID INNER JOIN Production.ProductSubcategory AS PS ON PS.ProductSubcategoryID = P.ProductSubcategoryID INNER JOIN Production.ProductCategory AS PC ON PC.ProductCategoryID = PS.ProductCategoryID WHERE PC.Name = 'Clothing' AND (SH.OrderDate BETWEEN (@StartDate) AND (@EndDate)) AND SH.SalesPersonID = (@BusinessPersonID)
Cette requête inclut un paramètre de requête pour le commercial à l'origine de la commande :
AND SH.SalesPersonID = (@BusinessPersonID)
Cliquez sur le bouton Exécuter (!). Lorsque vous êtes invité à indiquer les paramètres de la requête, utilisez le tableau suivant pour entrer les valeurs.
@StartDate
20010101
@EndDate
20030101
@BusinessPersonID
290
Cliquez sur OK. Le jeu de résultats retourné pour le commercial Ranjit Varkey Chudukatil s'affiche avec SalesPersonID = 290.
Vous allez ensuite créer un nouveau dataset qui répertorie les noms des commerciaux.
Pour remplir une liste de valeurs valides pour un paramètre de rapport
Dans la barre d'outils du volet Données du rapport, cliquez sur Nouveau, puis sur Dataset. La boîte de dialogue Propriétés du dataset s'ouvre.
Dans le champ Nom, tapez SalesPersons. Ce dataset sera utilisé pour remplir la liste de valeurs valides du paramètre de rapport SalesPersonID.
Vérifiez que la source de données est AdventureWorks2008.
Cliquez sur Concepteur de requêtes, puis sur Modifier en tant que texte.
Dans le volet de requête, collez la requête Transact-SQL suivante :
SELECT SP.BusinessEntityID, C.FirstName, C.LastName FROM Sales.SalesPerson AS SP INNER JOIN HumanResources.Employee AS E ON E.BusinessEntityID = SP.BusinessEntityID INNER JOIN Person.Person AS C ON C.BusinessEntityID = E.BusinessEntityID ORDER BY SP.BusinessEntityID
Cliquez deux fois sur OK. Dans le volet Données du rapport, le nouveau dataset affiche trois champs : BusinessEntityID, FirstName et LastName. Ce dataset sera utilisé pour fournir les valeurs valides du paramètre BusinessPersonID.
Vous allez ensuite créer un champ de dataset supplémentaire qui concatène FirstName et LastName dans un champ intitulé Name. Les champs que vous définissez sont appelés des champs calculés.
Pour définir un champ calculé dans le volet Données du rapport
Dans la barre d'outils du volet Données du rapport, cliquez avec le bouton droit sur le dataset SalesPersons, puis cliquez sur Ajouter un champ calculé. Lorsque la page Champs de la boîte de dialogue Propriétés du dataset s'ouvre, une nouvelle ligne a été ajoutée à la grille.
Dans la dernière zone de texte Nom du champ, tapez Nom.
Dans la zone de texte Champ source, collez l'expression suivante :
=Fields!LastName.Value & ", " & Fields!FirstName.Value
Cliquez sur OK.
Dans le volet Données du rapport, sous le dataset SalesPersons, le nouveau champ Name apparaît dans la collection de champs de ce dataset.
Vous allez ensuite pointer le paramètre de rapport BusinessPersonID vers les valeurs valides de ce dataset.
Pour remplir le paramètre de rapport avec une liste de valeurs disponibles
Dans le volet Données du rapport, développez le nœud Paramètres, cliquez avec le bouton droit sur BusinessPersonID et cliquez sur Propriétés du paramètre.
Dans Invite, tapez Select sales person:.
Dans Type de données, sélectionnez Entier.
Cliquez sur Valeurs disponibles.
Sélectionnez l'option Obtenir les valeurs à partir d'une requête.
Dans la liste déroulante Dataset, sélectionnez BusinessPersons.
Dans la liste déroulante Champ de valeur, sélectionnez BusinessEntityID.
Dans la liste déroulante Champ d'étiquette, sélectionnez Nom.
Lorsque vous sélectionnez Nom pour l'étiquette, la liste déroulante des valeurs valides du paramètre BusinessEntityID affiche désormais le nom de chaque commercial au lieu de l'identificateur métier.
Cliquez sur Valeurs par défaut.
Sélectionnez l'option Obtenir les valeurs à partir d'une requête.
Dans la liste déroulante Dataset, sélectionnez BusinessPersons.
Dans la liste déroulante Champ de valeur, sélectionnez BusinessEntityID.
Cliquez sur OK.
Cliquez sur Exécuter. Le rapport affiche une liste déroulante indiquant le nom des commerciaux.
Cliquez sur Afficher le rapport.
Le rapport affiche les commandes pour le commercial sélectionné qui correspondent aux limites spécifiées par les paramètres de rapport. Certaines combinaisons de dates, jours de la semaine et commerciaux peuvent ne donner aucun résultat.
Étapes suivantes
Vous avez ajouté une liste de valeurs disponibles pour un paramètre à un rapport existant. Vous allez ensuite modifier les paramètres DayoftheWeek et BusinessPersonID de manière à ce qu'ils acceptent des valeurs multiples. Consultez Leçon 3 : ajout de paramètres pour sélectionner plusieurs valeurs dans une liste (Générateur de rapports version 2.0).