Leçon 3 : ajout de paramètres pour sélectionner plusieurs valeurs dans une liste (Générateur de rapports version 2.0)

Dans cette leçon, vous allez apprendre à modifier un paramètre pour qu'il accepte plusieurs valeurs. Ce principe est connu sous le nom de paramètres à valeurs multiples. Par défaut, un paramètre n'accepte qu'une seule valeur. Les paramètres que vous avez créé dans la leçon précédente, BusinessPersonID et DayoftheWeek, acceptent des valeurs uniques. Pour modifier un paramètre de manière à ce qu'il accepte plusieurs valeurs, vous devez savoir si le paramètre a été créé automatiquement à partir d'un paramètre de requête (par exemple BusinessPersonID) ou si vous l'avez créé manuellement à l'aide du volet Données du rapport (par exemple DayoftheWeek).

Pour modifier un paramètre de rapport de manière à ce qu'il accepte plusieurs valeurs, il vous suffit de définir une propriété de paramètre de rapport. Si le paramètre de rapport est basé sur un paramètre de requête, vous devez également modifier la requête. Si vous utilisez le paramètre dans un filtre, vous devez modifier l'opérateur de filtre pour spécifier un jeu de valeurs à la place d'une valeur unique.

Pour remplacer le dataset existant

  1. Dans le volet Données du rapport, cliquez avec le bouton droit sur le dataset DataSet1, puis cliquez sur Requête.

    Le concepteur de requêtes textuel s'ouvre.

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

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

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

    AND SH.SalesPersonID IN (@BusinessPersonID)
    
  3. 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

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

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

  3. Dans la zone Nom, tapez WeekDaysfromQuery.

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

  5. Cliquez sur Concepteur de requêtes, puis sur Modifier en tant que texte.

  6. Dans le volet de requête, collez la 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
    
  7. 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.

  8. 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 WeekdayNumber.

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

Lorsque l'utilisateur sélectionne des valeurs de paramètre, il les sélectionne à partir des étiquettes, mais le rapport utilise les valeurs. Ceci est important lorsque vous définissez des valeurs par défaut ou un filtre. Les valeurs doivent être les valeurs entières du champ WeekdayNumber.

  1. Cliquez sur Valeurs par défaut.

  2. Sélectionnez Spécifier les valeurs.

  3. Cliquez sur Ajouter.

  4. Dans la zone Valeur, remplacez Vendredi par 6. Du fait que la valeur provient d'un dataset qui fournit à la fois le numéro et le nom du jour de la semaine, la valeur par défaut doit spécifier le numéro du jour de la semaine. La valeur 6 représente Samedi.

  5. Cliquez sur Ajouter.

  6. Dans la zone Valeur, tapez 7. Cette valeur représente Dimanche.

  7. Cliquez sur OK. 

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

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

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

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

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

  4. Modifiez Opérateur en remplaçant le signe égal (=) par In.

  5. Dans la zone Valeur, tapez [@DayoftheWeek.Label].

    Spécifiez l'étiquette de paramètre de telle sorte que le nom de la semaine soit comparé au champ de l'étiquette et non au champ numérique du jour de la semaine.

  6. Cliquez sur OK. 

    Le filtre de la table est désormais défini pour comparer la valeur du champ Weekday à l'étiquette du paramètre DayoftheWeek à l'aide de l'opérateur In. Lorsque vous choisissez que le paramètre du rapport soit à plusieurs valeurs, le filtre teste chaque ligne de la table pour vérifier que le champ Weekday existe dans la collection DayoftheWeek.

  7. Cliquez sur Exécuter pour afficher un aperçu du rapport. Le rapport affiche le paramètre de rapport DaysoftheWeek avec les valeurs par défaut Samedi et Dimanche, qui sont les étiquettes des valeurs par défaut que vous avez spécifiées. 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 pour utiliser 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 (Générateur de rapports version 2.0).