Leçon 2 : Ajout de paramètres pour créer une liste de valeurs disponibles (SSRS)

Les valeurs disponibles (ou valeurs valides) fournissent à l'utilisateur la liste des valeurs possibles pour un paramètre de rapport. En tant que créateur du rapport, vous pouvez fournir les valeurs valides à partir d'une requête spécifiquement conçue pour extraire 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 vous assurez que seules les valeurs existant dans la base de données peuvent être choisies au sein de la liste déroulante.

Dans cette leçon, vous allez modifier le rapport Sales Orders pour proposer une liste déroulante de noms de commerciaux disponibles à partir de la base de données SQL Server AdventureWorks2008R2. 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 le dataset existant

  1. Dans le volet Données du rapport, cliquez avec le bouton droit sur le dataset AdventureWorksDataset, puis cliquez sur Propriétés du dataset.

    Notes

    Si le volet Données du rapport n'est pas visible, cliquez sur Données du rapport dans le menu Affichage.

  2. Dans la liste Source de données, vérifiez que AdventureWorks_Ref est sélectionné.

  3. Dans Type de requête, vérifiez que Texte est sélectionné.

  4. Cliquez sur le bouton Concepteur de requêtes pour ouvrir le concepteur de requêtes.

  5. Remplacez le texte par la requête suivante dans la zone de texte :

    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))
    AND  soh.SalesPersonID = (@BusinessPersonID)
    

    Il s'agit de la même requête que précédemment, à la différence près qu'une condition a été ajoutée pour limiter le jeu de résultats à un seul commercial :

    AND soh.SalesPersonID = (@BusinessPersonID)

  6. 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

    1/31/2001

    @EndDate

    1/31/2003

    @BusinessPersonID

    290

  7. Cliquez sur OK. Le jeu de résultats retourné pour le commercial Ranjit Varkey Chudukatil s'affiche avec SalesPersonID = 290. 

Pour alimenter la liste de valeurs valides d'un paramètre de rapport

  1. Dans le volet Données du rapport, cliquez sur Nouveau, puis sur Dataset. La boîte de dialogue Propriétés du dataset s'ouvre.

  2. Dans le champ Nom, tapez BusinessPersons. Ce dataset sera utilisé pour alimenter la liste de valeurs valides du paramètre de rapport SalesPersonID.

  3. Vérifiez que la source de données est AdventureWorks_Ref.

  4. 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. La liste de champs est alimentée pour le dataset BusinessPersons. Ce dataset sera utilisé pour fournir les valeurs valides du paramètre BusinessPersonID.

  5. Vous remarquerez que le dataset BusinessPersons possède des champs appelés FirstName et LastName. Ensuite, nous concaténerons ces champs dans un champ appelé Name.

Pour définir un champ calculé dans le volet Données du rapport

  1. Dans le volet Données du rapport, cliquez avec le bouton droit sur le dataset BusinessPersons, 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.

  2. Dans la dernière zone de texte Nom du champ, tapez Nom.

  3. Dans la zone de texte Champ source, collez l'expression suivante :

    =Fields!LastName.Value & ", " & Fields!FirstName.Value

  4. Cliquez sur OK.

  5. Dans le volet des données du rapport, sous le dataset BusinessPersons, le nouveau champ Name apparaît dans la collection de champs de ce dataset.

Pour alimenter la liste de valeurs disponibles du paramètre de rapport

  1. 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.

  2. Dans Invite, tapez Select business person:.

  3. Dans Type de données, sélectionnez Entier.

  4. Cliquez sur Valeurs disponibles.

  5. Sélectionnez l'option Obtenir les valeurs à partir d'une requête.

  6. Dans la liste déroulante Dataset, sélectionnez BusinessPersons.

  7. Dans la liste déroulante Champ de valeur, sélectionnez BusinessEntityID.

  8. 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 leur numéro d'identification.

  9. Cliquez sur Valeurs par défaut.

  10. Sélectionnez l'option Obtenir les valeurs à partir d'une requête.

  11. Dans la liste déroulante Dataset, sélectionnez BusinessPersons.

  12. Dans la liste déroulante Champ de valeur, sélectionnez BusinessEntityID.

  13. Cliquez sur OK. 

  14. Cliquez sur l'onglet Aperçu. Le rapport affiche une liste déroulante indiquant le nom des commerciaux.

  15. Cliquez sur Afficher le rapport. Sélectionnez d'autres valeurs de paramètre pour examiner les résultats.

Étapes suivantes

Vous avez ajouté avec succès la liste de valeurs disponibles d'un paramètre à un rapport existant. Vous allez ensuite modifier les paramètres DayoftheWeek et SalesPersonID en paramètres à valeurs multiples. Consultez Leçon 3 : Ajout de paramètres pour sélectionner plusieurs valeurs dans une liste (SSRS).