Leçon 4 : ajout de paramètres en cascade (SSRS)

Les paramètres en cascade permettent de gérer d'importantes quantités de données de rapport. Lorsque vous utilisez des paramètres en cascade, les valeurs possibles d'un paramètre dépendent de la valeur sélectionnée pour le paramètre qui le précède. L'ordre est important pour les paramètres en cascade car la requête de dataset concernant un paramètre situé plus bas dans la liste inclut des références à des paramètres situés plus haut dans la liste.

Au cours de cette leçon, vous allez créer un rapport qui contient une requête de dataset principale définissant trois paramètres de requête pour les objets Catégorie, Sous-catégorie et Produit. Vous définirez ensuite trois datasets supplémentaires afin de spécifier les valeurs disponibles pour chaque paramètre en cascade.

Pour ajouter un nouveau rapport à un projet Report Server déjà ouvert

  1. Dans l'Explorateur de solutions, cliquez avec le bouton droit sur Rapports, pointez sur Ajouter, puis cliquez sur Nouvel élément.

  2. Dans la section Modèles de la boîte de dialogue Ajouter un nouvel élément, cliquez sur l'option Rapport.

  3. Dans le champ Nom, tapez CascadingParameters.rdl, puis cliquez sur l'option Ajouter.

    Le Concepteur de rapports s'ouvre et affiche le nouveau fichier .rdl en mode Conception.

Pour créer une référence renvoyant à une source de données partagée

  1. Dans le volet Données du rapport, cliquez sur Nouveau, puis sur Source de données.

  2. Dans le champ Nom, tapez AdventureWorks_Ref.

  3. Sélectionnez l'option Utiliser une référence de source de données partagée.

  4. Dans la zone de liste déroulante, sélectionnez AdventureWorks.

  5. Cliquez sur OK. 

Pour créer un dataset principal comportant une requête ainsi que des paramètres de requête

  1. Dans le volet Données du rapport, cliquez avec le bouton droit sur le nom de la source de données, à savoir sur AdventureWorks_Ref, puis cliquez sur Ajouter un dataset.

  2. Dans la zone Nom, tapez SalesbyCategory.

  3. Dans la liste Source de données, assurez-vous que la source AdventureWorks_Ref est bien sélectionnée.

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

  5. Au-dessous du volet de requête, cliquez sur Concepteur de requêtes.

  6. Cliquez sur Modifier en tant que texte pour basculer vers le Concepteur de requêtes textuel.

  7. Copiez ensuite la requête suivante :

    SELECT 
       PC.Name AS Category,
       PSC.Name AS Subcategory,
       P.Name AS Product,
       SOH.[OrderDate],
       SOH.SalesOrderNumber,
       SD.OrderQty, 
       SD.LineTotal
       FROM [Sales].[SalesPerson] SP 
          INNER JOIN [Sales].[SalesOrderHeader] SOH 
          ON SP.[BusinessEntityID] = SOH.[SalesPersonID]
          INNER JOIN Sales.SalesOrderDetail SD
          ON SD.SalesOrderID = SOH.SalesOrderID
          INNER JOIN Production.Product P
          ON SD.ProductID = P.ProductID
          INNER JOIN Production.ProductSubcategory PSC
          ON P.ProductSubcategoryID = PSC.ProductSubcategoryID
          INNER JOIN Production.ProductCategory PC
          ON PC.ProductCategoryID = PSC.ProductCategoryID
          WHERE (PC.Name = (@Category)
             AND PSC.Name = (@Subcategory)
             AND P.Name = (@Product))
    

    La requête contient à présent les paramètres de requête @Category, @Subcategory et @Product.

  8. Cliquez sur Exécuter (!) pour consulter le jeu de résultats. La boîte de dialogue Définir les paramètres de la requête s'affiche.

  9. Dans la colonne Valeur du paramètre, entrez une valeur pour chaque paramètre de requête à l'aide du tableau ci-dessous.

    Nom du paramètre

    Valeur du paramètre

    @Category

    Components

    @Subcategory

    Brakes

    @Product

    Front brakes

  10. Cliquez sur OK. 

    Le jeu de résultats contient une liste répertoriant les numéros de commande classés par date pour les freins avant.

    Lorsque vous avez exécuté la requête, chacun des paramètres de cette dernière a généré un paramètre de rapport correspondant. Pour quitter la boîte de dialogue Concepteur de requêtes, cliquez deux fois sur le bouton OK.

  11. (Facultatif) Dans le volet Données du rapport, développez le nœud Paramètres, puis assurez-vous que les paramètres de rapport suivants apparaissent : Category, Subcategory et Product.

  12. (Facultatif) La valeur de chaque paramètre de requête de dataset est liée au paramètre de rapport portant le même nom. Pour vérifier l'existence de ce lien particulier, cliquez avec le bouton droit sur SalesbyCategory dans le volet Données du rapport, puis cliquez sur Propriétés du dataset.

    1. Cliquez sur Paramètres.

    2. Dans la colonne Nom du paramètre, vérifiez que les noms répertoriés sont @Category, @Subcategoryet @Product, respectivement.

    3. Dans la colonne Valeur du paramètre, vérifiez que les valeurs sont [@Category], [@Subcategory] et [@Product].

      Ces expressions simples font référence aux paramètres de rapport qui apparaissent dans le volet Données du rapport.

Vous allez à présent créer le dataset fournissant les valeurs de chaque paramètre de rapport au moment de l'exécution du rapport. Ces valeurs seront utilisées comme valeurs disponibles et valeurs par défaut de sorte à ce que le rapport puisse s'exécuter automatiquement.

Pour définir un dataset valide de valeurs destiné à un paramètre de rapport

  1. Dans le volet Données du rapport, cliquez avec le bouton droit sur AdventureWorks_Ref, puis cliquez sur Ajouter un dataset.

  2. Dans la zone Nom, tapez CategoryValues.

  3. Dans la liste Source de données, assurez-vous que la source AdventureWorks_Ref est bien sélectionnée.

  4. Dans Type de requête, assurez-vous que l'option Texte est définie.

  5. Au-dessous du volet Requête, cliquez sur Concepteur de requêtes.

  6. Cliquez sur Modifier en tant que texte pour basculer vers le Concepteur de requêtes textuel.

  7. Collez le texte de requête ci-après dans le volet Requête :

    SELECT DISTINCT Name AS Category FROM Production.ProductCategory
    

    La commande SELECT DISTINCT extrait uniquement les valeurs uniques des colonnes.

  8. Cliquez sur Exécuter (!) pour consulter le jeu de résultats. La colonne Category qui apparaît contient quatre valeurs, à savoir les valeurs Accessories, Bikes, Clothing et Components.

  9. Cliquez sur OK.

Vous allez à présent définir les propriétés du paramètre de rapport Category de sorte à ce que les valeurs de la requête soient utilisées à la fois comme ses valeurs disponibles et ses valeurs par défaut.

Pour définir les valeurs disponibles et les valeurs par défaut d'un paramètre de rapport

  1. Dans le dossier Paramètres du volet Données du rapport, cliquez avec le bouton droit sur Category, puis cliquez sur Propriétés du paramètre.

  2. Dans la zone Nom, assurez-vous que le nom qui apparaît correspond à Category.

  3. Cliquez sur Valeurs disponibles.

  4. Cliquez sur Obtenir les valeurs à partir d'une requête. Trois champs apparaissent.

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

  6. Dans le champ Valeur, cliquez sur Category.

  7. Dans le champ Étiquette, cliquez sur Category.

  8. Cliquez sur Valeurs par défaut.

  9. Cliquez sur Obtenir les valeurs à partir d'une requête.

  10. Dans la liste déroulante Dataset, sélectionnez CategoryValues.

  11. Dans le champ Valeur, sélectionnez Category.

  12. Cliquez sur OK.

Vous allez à présent modifier le paramètre @Subcategory de sorte à ce qu'il dépende de la valeur sélectionnée pour le paramètre @Category.

Pour définir un dataset de valeurs correspondant au paramètre de rapport Subcategory

  1. Dans le volet Données du rapport, cliquez avec le bouton droit sur AdventureWorks_Ref, puis cliquez sur Ajouter un dataset.

  2. Dans la zone Nom, tapez SubcategoryValues.

  3. Collez le texte de requête ci-après dans le volet Requête :

    SELECT DISTINCT PSC.Name AS Subcategory 
       FROM Production.ProductSubcategory AS PSC
          INNER JOIN Production.ProductCategory AS PC
          ON PC.ProductCategoryID = PSC.ProductCategoryID
          WHERE PC.Name = (@Category)
    
  4. Cliquez sur OK. 

  5. Le dataset SubcategoryValues apparaît à présent dans le volet Données du rapport. Si vous ouvrez le concepteur de requêtes, exécutez la requête et entrez des composants comme catégorie, le jeu de résultats affiche 14 lignes.

Vous allez à présent définir les propriétés du paramètre de rapport @Subcategory de sorte à ce que les valeurs de cette requête soient utilisées à la fois comme ses valeurs disponibles et ses valeurs par défaut.

Pour définir les valeurs disponibles et les valeurs par défaut du paramètre de rapport Subcategory

  1. Dans le dossier Paramètres du volet Données du rapport, cliquez avec le bouton droit sur Subcategory, puis cliquez sur Propriétés du paramètre.

  2. Cliquez sur Valeurs disponibles.

  3. Cliquez sur Obtenir les valeurs à partir d'une requête.

  4. Dans la liste déroulante Dataset, cliquez sur SubcategoryValues.

  5. Dans le champ Valeur, cliquez sur Subcategory.

  6. Dans le champ Étiquette, cliquez sur Subcategory.

  7. Cliquez sur Valeurs par défaut.

  8. Cliquez sur Obtenir les valeurs à partir d'une requête.

  9. Dans la liste déroulante Dataset, cliquez sur SubcategoryValues.

  10. Dans le champ Valeur, cliquez sur Subcategory.

  11. Cliquez sur OK.

Créez ensuite un paramètre @Product dépendant à la fois de la valeur de @Category et de la valeur de @Subcategory.

Pour définir un dataset de valeurs correspondant au paramètre de rapport Product

  1. Dans le volet Données du rapport, cliquez avec le bouton droit sur AdventureWorks_Ref, puis cliquez sur Ajouter un dataset.

  2. Dans la zone Nom, tapez ProductValues.

  3. Collez le texte de requête ci-après dans le volet Requête :

    SELECT DISTINCT P.Name AS Product
    FROM Production.Product P
       INNER JOIN Production.ProductSubcategory AS PSC
       ON P.ProductSubcategoryID = PSC.ProductSubcategoryID
       INNER JOIN Production.ProductCategory AS PC
       ON PC.ProductCategoryID = PSC.ProductCategoryID
    WHERE (PC.Name = (@Category)
       AND PSC.Name = (@Subcategory))
    
  4. Cliquez sur OK.

    Un dataset nommé ProductValues contenant un champ intitulé Product est ajouté au volet Données du rapport.

Vous allez à présent définir les propriétés du paramètre @Product de sorte à ce que les valeurs de cette requête soient utilisées à la fois comme ses valeurs disponibles et ses valeurs par défaut.

Pour définir les valeurs disponibles et les valeurs par défaut du paramètre de rapport Product

  1. Dans le dossier Paramètres du volet Données du rapport, cliquez avec le bouton droit sur Product, puis cliquez sur Propriétés du paramètre.

  2. Cliquez sur Valeurs disponibles.

  3. Cliquez sur Obtenir les valeurs à partir d'une requête.

  4. Dans la liste déroulante Dataset, cliquez sur ProductValues.

  5. Dans le champ Valeur, cliquez sur Product.

  6. Dans le champ Étiquette, cliquez sur Product.

  7. Cliquez sur Valeurs par défaut.

  8. Cliquez sur Obtenir les valeurs à partir d'une requête.

  9. Dans la liste déroulante Dataset, cliquez sur ProductValues.

  10. Dans le champ Valeur, cliquez sur Product.

  11. Cliquez sur OK.

Vous allez à présent créer une table qui vous permettra de visualiser le résultat obtenu en fonction de la valeur sélectionnée pour chaque paramètre en cascade.

Pour ajouter une table permettant d'afficher les résultats

  1. En mode Conception, ajoutez une table.

  2. Dans le dataset SalesbyCategory du volet Données du rapport, faites glisser les champs suivants vers les 3 cellules de la ligne de détails de la table : SalesOrderNumber, OrderQty et LineTotal.

  3. Faites glisser le paramètre Category du dataset SalesbyCategory jusqu'au volet Groupes de lignes, puis déposez-le au-dessus du groupe Détails.

  4. Faites glisser le paramètre Subcategory du dataset SalesbyCategory vers le volet Groupes de lignes, puis déposez-le sous le paramètre Category.

  5. Faites glisser le paramètre Product du dataset SalesbyCategory vers le volet Groupes de lignes, puis déposez-le sous le paramètre Subcategory.

  6. Faites glisser le paramètre OrderDate du dataset SalesbyCategory vers le volet Groupes de lignes, puis déposez-le sous le paramètre Product.

  7. (Facultatif) Mettez en forme les cellules suivantes : [LineTotal] comme Monnaie et [OrderDate] comme date.

Pour tester les paramètres en cascade

  1. Cliquez sur Aperçu.

    Le rapport s'exécute automatiquement, car vous avez défini une valeur par défaut pour chaque paramètre de rapport.

  2. Dans la liste déroulante Category, sélectionnez Components.

  3. Dans la liste déroulante Subcategory, sélectionnez Brakes.

  4. Dans la liste déroulante Product, sélectionnez Front Brakes.

    Remarque : au fur et à mesure que vous sélectionnez de nouveaux paramètres, la liste déroulante répertoriant leurs valeurs affichent uniquement les valeurs disponibles en fonction des précédentes sélections effectuées.

  5. Dans la barre d'outils de la visionneuse de rapports, cliquez sur l'option Afficher le rapport.

Le rapport affiche le numéro des bons de commande, les quantités commandées et les totaux par ligne pour toutes les commandes comportant des freins avant. La table affiche les commandes par catégorie, sous-catégorie, produit et date de commande.

Étapes suivantes

Vous avez donc réussi à créer un rapport qui affiche les commandes comportant un produit donné, et ce en utilisant des paramètres en cascade qui permettent de filtrer les commandes par catégorie de produit, sous-catégorie de produit et nom de produit. Dans la leçon suivante, vous allez apprendre à passer un paramètre à un rapport d'extraction. Consultez Leçon 5 : ajout de paramètres à passer à un rapport d'extraction (SSRS).