Leçon 1 : ajout de paramètres pour filtrer les rapports par date (Générateur de rapports version 2.0)

En incluant des paramètres de date de début et de fin dans une requête de votre rapport, vous pouvez spécifier une plage de dates qui limite les données récupérées de la source de données. Vous pouvez créer des paramètres supplémentaires pour filtrer les données une fois qu'elles ont été extraites de la source de données.

Dans cette leçon, vous allez ajouter les paramètres @StartDate et @EndDate à la requête pour réduire les données extraites de la source de données. Les deux paramètres de rapport StartDate et EndDate se créent automatiquement et s'affichent dans le volet Données du rapport. Les paramètres respectent la casse. Dans Transact-SQL, les paramètres de requête commencent par le symbole @, à la différence des paramètres de requête qui figurent dans le volet Données du rapport.

Vous allez définir DateTime comme type de données des paramètres et faire en sorte qu'un contrôle calendrier s'affiche avec la zone de texte du paramètre dans la barre d'outils de la Visionneuse de rapports. Vous allez définir les valeurs par défaut des paramètres pour que le rapport puisse s'exécuter automatiquement. Enfin, vous allez créer un paramètre de rapport DayofWeek qui n'est pas lié à un paramètre de requête et l'utiliser pour filtrer les données une fois que celles-ci ont été extraites de la source de données.

Avant de commencer ce didacticiel, vous devez avoir terminé le Didacticiel : création d'un rapport de tableau de base (Générateur de rapports version 2.0).

Pour ouvrir un rapport existant

  1. Cliquez sur Démarrer, pointez sur Programmes, sur Générateur de rapports Microsoft SQL Server 2008, puis cliquez sur Générateur de rapports version 2.0.

  2. À partir du bouton Générateur de rapports, cliquez sur Ouvrir.

  3. Accédez à Sales Order (Commande client). Il s'agit du rapport qui a été créé dans le cadre du Didacticiel : création d'un rapport de tableau de base (Générateur de rapports version 2.0).

  4. Cliquez sur Ouvrir. La définition de rapport s'ouvre en mode Conception.

    Vous allez à présent remplacer la requête de dataset par une requête qui contient un paramètre de requête.

Pour remplacer la requête de dataset existante

  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 s'ouvre.

  2. Dans le volet de requête, remplacez le texte par la requête suivante :

    SELECT
      SH.OrderDate
      ,SH.SalesOrderNumber
      ,SD.OrderQty
      ,SD.LineTotal
      ,P.Name AS [Product]
      ,PS.Name AS [Subcategory]
    FROM
      Sales.SalesOrderHeader AS SH
      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.OnlineOrderFlag = 0
       AND (SH.OrderDate BETWEEN (@StartDate) AND (@EndDate))
    

    Il s'agit de la même requête que précédemment, à la différence près que la clause de tri ORDER BY a été supprimée et qu'une condition avec deux paramètres de limitation a été ajoutée :

    AND (SH.OrderDate BETWEEN (@StartDate) AND (@EndDate))

  3. Cliquez sur le bouton Exécuter (!) de la barre d'outils. La boîte de dialogue Définir les paramètres de la requête s'ouvre et vous êtes invité à définir une valeur pour chaque paramètre.

  4. Indiquez deux valeurs pour afficher un jeu de résultats filtré :

    1. Dans la colonne Valeur du paramètre, entrez une valeur pour @StartDate, (20010101, par exemple).

    2. Dans la colonne Valeur du paramètre, entrez une valeur pour @EndDate (20030101, par exemple).

  5. Cliquez sur OK. 

    Le jeu de résultats affiche un dataset contenant des valeurs pour les commandes des années 2001 et 2002.

  6. Cliquez sur OK. 

    Dans le volet Données du rapport, développez le nœud Paramètres pour consulter les deux paramètres de rapport StartDate et EndDate, qui sont automatiquement créés à partir des paramètres de requête.

    Après avoir défini les paramètres de requête qui représentent une date ou une heure, vous devez modifier le type de données des paramètres de rapport pour qu'il corresponde.

Pour modifier le type de données et les valeurs par défaut d'un paramètre de rapport

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

  2. Vérifiez que le nom du paramètre est StartDate et que l'invite est Start Date.

  3. Dans Type de données, sélectionnez Date/Heure. Le type de données du paramètre de rapport enregistré dans la définition de rapport est alors défini.

  4. Cliquez sur OK.

  5. Dans le volet Données du rapport, double-cliquez sur EndDate. Vérifiez les valeurs du nom et de l'invite.

  6. Dans Type de données, sélectionnez Date/Heure.

  7. Cliquez sur OK. 

  8. Cliquez sur Exécuter pour afficher un aperçu du rapport. Les paramètres StartDate et EndDate apparaissent chacun dans la barre d'outils du rapport avec un contrôle calendrier. Les contrôles calendrier s'affichent automatiquement lorsque le type de données du paramètre est Date/Time et que vous n'avez pas défini de liste de valeurs disponibles. Si vous avez défini une liste de valeurs disponibles, une liste déroulante de valeurs s'affiche à la place.

  9. Indiquez les valeurs des deux paramètres pour exécuter le rapport. Vous pouvez utiliser le contrôle calendrier ou simplement taper les dates suivantes :

    1. Dans la zone de texte du paramètre StartDate, tapez 2001-01-01.

    2. Dans la zone de texte du paramètre EndDate, tapez 2003-01-01.

  10. Cliquez sur Afficher le rapport. Le rapport n'affiche que les données qui sont comprises dans l'intervalle des valeurs des paramètres de rapport.

    Une fois les paramètres de requête du rapport créés, vous pouvez ajouter les valeurs par défaut de ces paramètres. Les paramètres par défaut permettent au rapport de s'exécuter automatiquement ; sinon, l'utilisateur doit entrer les valeurs des paramètres pour que le rapport s'exécute.

Pour définir les valeurs par défaut des paramètres

  1. Passez en mode Conception.

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

  3. Cliquez sur Valeurs par défaut.

  4. Sélectionnez l'option Spécifier les valeurs. Le bouton Ajouter et une grille Valeur vide apparaissent.

  5. Cliquez sur Ajouter. Une ligne vide est ajoutée à la grille.

  6. Dans la zone de texte Valeur, remplacez le texte par défaut (Null) en tapant 2001-01-01.

  7. Cliquez sur OK. 

  8. Dans le volet Données du rapport, double-cliquez sur EndDate.

  9. Cliquez sur Valeurs par défaut.

  10. Sélectionnez l'option Spécifier les valeurs.

  11. Cliquez sur Ajouter.

  12. Tapez 2003-01-01.

  13. Cliquez sur OK.

  14. Cliquez sur Aperçu. Le rapport s'exécute immédiatement car chaque paramètre a une valeur par défaut.

Pour ajouter un nouveau champ à la requête utilisée pour le filtrage

  1. Passez en mode Conception.

  2. Cliquez avec le bouton droit sur le dataset Dataset1 et sélectionnez Propriétés du dataset. Ouvrez le concepteur de requêtes et remplacez la requête 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.SalesOrderHeader AS SH
      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.OnlineOrderFlag = 0
       AND (SH.OrderDate BETWEEN (@StartDate) AND (@EndDate))
    

    Dans la requête, vous pouvez définir une colonne calculée supplémentaire pour le jour de la semaine où une vente intervient en ajoutant la commande suivante à l'instruction SELECT :

    ,DATENAME(weekday, soh.OrderDate) as Weekday.

  3. Cliquez sur Exécuter (!). La boîte de dialogue Définir les paramètres de la requête s'affiche.

  4. Dans la colonne Valeur du paramètre, entrez une valeur pour @StartDate, (20010101, par exemple).

  5. Dans la colonne Valeur du paramètre, entrez une valeur pour @EndDate (20030101, par exemple).

  6. Cliquez sur OK. Une nouvelle colonne doit s'afficher dans le jeu de résultats portant l'étiquette Weekday.

  7. Cliquez deux fois sur OK. Dans le volet Données du rapport, vérifiez que Weekday est un champ.

    Maintenant que la table contient des données qui identifient le jour de la semaine, vous pouvez ajouter un filtre de telle sorte que seules les ventes d'un jour précis de la semaine soient prises en compte dans le rapport. Pour vous en assurer, vous pouvez afficher le jour de la semaine avec la date de la commande client.

Pour mettre en forme la date dans la table

  1. Passez en mode Conception.

  2. Cliquez sur la cellule contenant l'expression de champ OrderDate. Sous l'onglet Accueil, dans le groupe Nombre, cliquez sur le lanceur de boîte de dialogue.

  3. Dans Catégorie, vérifiez que Date est sélectionné.

  4. Dans la zone Type, sélectionnez un type de date qui affiche le jour de la semaine. Par exemple, pour le paramètre régional Anglais (États-Unis), vous pouvez sélectionner Monday, January 31, 2000.

  5. Cliquez sur OK.

  6. Cliquez sur Exécuter pour afficher un aperçu du rapport. La date figurant dans la première colonne de la table indique le jour de la semaine ainsi que la date de calendrier.

    Vous allez à présent ajouter un paramètre pour permettre à l'utilisateur de procéder à un filtrage en fonction du jour de la semaine.

Pour ajouter un nouveau paramètre de rapport

  1. Passez en mode Conception.

  2. Dans le volet Données du rapport, cliquez sur Nouveau, puis sur Paramètre. La boîte de dialogue Propriétés du paramètre de rapport s'ouvre.

  3. Dans Nom, tapez DayoftheWeek.

  4. Dans Invite, tapez Filter on the day of the week:.

  5. Vérifiez que le type de données est Text.

  6. Cliquez sur Valeurs par défaut.

  7. Sélectionnez l'option Spécifier les valeurs. Le bouton Ajouter et une grille Valeur vide apparaissent.

  8. Cliquez sur Ajouter.

  9. Tapez Friday (vendredi).

  10. Cliquez sur OK. 

    Ensuite, vous allez ajouter un filtre pour n'afficher que la valeur que vous avez choisie pour le paramètre DayoftheWeek. Vous pouvez ajouter un filtre à la table ou au dataset. Ce rapport contient une table et un graphique qui présentent les mêmes données. Ajoutez le filtre à la table si vous souhaitez afficher les données filtrées dans la table uniquement. Ajoutez le filtre au dataset si vous souhaitez que la table et le graphique affichent tous deux les données filtrées. Dans la procédure suivante, vous allez définir le filtre sur le dataset.

Pour définir un filtre de dataset avec une expression de paramètre

  1. En mode Conception, 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.

  3. Cliquez sur Ajouter. Une ligne vide est ajoutée à la grille.

  4. Dans Expression, sélectionnez [Weekday] dans la liste déroulante.

  5. Vérifiez que le signe égal (=) est affiché dans Opérateur.

  6. Cliquez sur le bouton d'expression (fx) situé à côté de la zone de texte Valeur. La boîte de dialogue Expression s'affiche.

  7. Dans Catégorie, cliquez sur Paramètres. La liste des paramètres actuels s'affiche dans le volet Valeurs. Double-cliquez sur DayoftheWeek. L'expression de paramètre est ajoutée à la zone de texte de l'expression. L'expression suivante apparaît maintenant dans la zone de texte de l'expression : =Parameters!DayoftheWeek.Value.

  8. Cliquez sur OK. 

    Valeur présente l'expression simple pour le paramètre DayoftheWeek : [@DayoftheWeek].

  9. Cliquez sur OK. 

    Le filtre du dataset est maintenant défini pour comparer la valeur du champ Weekday à la valeur de paramètre de DayoftheWeek. Par exemple, lorsque vous entrez la valeur Vendredi dans la barre d'outils du rapport pour DayoftheWeek, le processeur de rapports ne traite que les lignes de la table où le champ Weekday a pour valeur Vendredi.

    Cliquez sur Aperçu. Comme tous les paramètres possèdent des valeurs par défaut, le rapport s'exécute automatiquement. La table et le graphique n'affichent que les valeurs qui sont comprises dans la plage de dates définie par StartDate et EndDate et qui tombent un vendredi (Friday). Pour ce dataset, seules trois dates tombent un vendredi :

    • 1er février 2002

    • 1er mars 2002

    • 1er novembre 2002

Étapes suivantes

Vous avez défini des paramètres de requête et des paramètres de rapport, leurs valeurs par défaut, ainsi qu'un filtre pour un dataset. Dans la prochaine leçon, vous allez apprendre à créer une liste de valeurs disponibles, ou valeurs valides, pour un paramètre. Consultez Leçon 2 : ajout de paramètres pour créer une liste de valeurs disponibles (Générateur de rapports version 2.0).