Leçon 3 : Ajout de paramètres pour sélectionner plusieurs valeurs dans une liste

Dans cette leçon, vous allez modifier les paramètres BusinessPersonID 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 BusinessPersonID, vous allez changer la requête de telle sorte que le dataset AdventureWorks2008 teste @BusinessPersonID 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 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.

  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 IN (@BusinessPersonID)
    

    Il s'agit de la même requête que précédemment, à la différence près qu'une condition a été modifiée et est passée d'égalité à inclusion.

    AND soh.SalesPersonID IN (@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. Le Concepteur de requêtes ne prend pas en charge le test des paramètres à valeurs multiples.

    @StartDate

    20010101

    @EndDate

    20030101

    @BusinessPersonID

    290

  7. Cliquez sur OK.

    Le jeu de résultats retourné pour le commercial Ranjit Varkey Chudukatil s'affiche avec BusinessPersonID = 290.

Pour modifier le paramètre de rapport BusinessPersonID en vue d'accepter plusieurs valeurs

  1. Dans le volet Données du rapport, développez Paramètres, puis double-cliquez sur le paramètre BusinessPersonID.

  2. Sélectionnez l'option Autoriser les valeurs multiples.

  3. Cliquez sur OK.

  4. Cliquez sur Aperçu. Le rapport s'exécute automatiquement. Tous les noms des commerciaux figurent dans la liste déroulante correspondant à BusinessPersonID.

[!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. Par défaut, toutes les valeurs sont sélectionnées.

Pour ajouter un nouveau dataset en vue d'alimenter les valeurs valides d'un paramètre de rapport

  1. Passez en mode Conception.

  2. Dans le volet Données du rapport, cliquez avec le bouton droit sur AdventureWorks_Ref, puis cliquez sur Ajouter un dataset. La boîte de dialogue Propriétés du dataset s'ouvre.

  3. Dans le champ Nom, tapez WeekDaysfromQuery.

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

  5. Dans Requête, tapez ou collez la chaîne de requête suivante :

    SET DATEFIRST 1;
    SELECT DISTINCT 
       DATEPART(weekday, S.OrderDate) as WeekDayNumber,
       DATENAME(weekday, S.OrderDate) as Weekday
       FROM Sales.SalesOrderHeader S
    Order by WeekDayNumber
    
  6. Cliquez sur le bouton Exécuter (!) de la barre d'outils du Concepteur de requêtes. Le jeu de résultats retourné affiche les nombres ordinaux et les jours de la semaine.

  7. Cliquez sur OK deux fois pour quitter la boîte de dialogue Propriétés du dataset.

    Le dataset WeekDaysfromQuery apparaît dans le volet Données du rapport.

Pour modifier un paramètre en vue d'accepter plusieurs valeurs, des valeurs par défaut et des valeurs valides

  1. Dans le volet Données du rapport, développez Paramètres et double-cliquez sur le paramètre DayoftheWeek. La boîte de dialogue Propriétés du paramètre de rapport s'ouvre.

  2. Sélectionnez Autoriser les valeurs multiples.

  3. Cliquez sur Valeurs disponibles.

  4. Sélectionnez Obtenir les valeurs à partir d'une requête.

  5. Dans la liste déroulante Dataset, sélectionnez WeekDaysfromQuery.

  6. Dans la liste déroulante Champ de valeur, sélectionnez Weekday.

  7. Dans la liste déroulante Champ d'étiquette, sélectionnez Weekday.

  8. Cliquez sur Valeurs par défaut.

  9. Sélectionnez Spécifier les valeurs.

  10. (Facultatif) Sélectionnez la valeur existante Friday et cliquez sur Supprimer.

  11. Cliquez sur Ajouter.

  12. Dans la zone Valeur, tapez Saturday.

  13. Cliquez sur Ajouter.

  14. Dans la zone Valeur, tapez Sunday.

  15. Cliquez sur OK.

Avant de pouvoir afficher un aperçu du rapport, vous devez modifier l'expression de filtre définie pour la région de données de table pour utiliser l'opérateur IN car le paramètre DayoftheWeek accepte désormais les valeurs multiples.

Pour modifier un filtre en vue d'utiliser un paramètre à valeurs multiples

  1. En mode Conception, cliquez avec le bouton droit sur la table, puis cliquez sur Propriétés du tableau matriciel. La boîte de dialogue Propriétés du tableau matriciel s'ouvre.

  2. Cliquez sur Filtres. Un filtre a déjà été ajouté pour DaysoftheWeek au cours de la Leçon 1.

  3. Dans la liste déroulante Expression, vérifiez que la valeur est [Weekday].

  4. Vérifiez que Texte est sélectionné.

  5. Modifiez Opérateur en remplaçant le signe égal (=) par l'opérateur In.

  6. Dans la liste déroulante de la zone de texte Valeur, vérifiez que la valeur est [@DayoftheWeek].

  7. Cliquez sur OK.

    Le filtre de la table 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. Lorsque vous choisissez que le paramètre du rapport soit à valeurs multiples, le filtre teste chaque ligne de la table pour vérifier que le champ Weekday existe dans la collection DayoftheWeek.

  8. Cliquez sur Aperçu. Le rapport affiche le paramètre de rapport DaysoftheWeek avec les valeurs par défaut Saturday et Sunday. Utilisez la liste déroulante pour sélectionner plusieurs valeurs pour le paramètre DayoftheWeek.

É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 leçon suivante, vous allez apprendre à créer des paramètres dont les valeurs sont alimentées sous condition, en fonction d'une valeur sélectionnée pour un précédent paramètre. Consultez Leçon 4 : ajout de paramètres en cascade.