Procédure pas à pas : Créer un rapport ReportViewer

Cette procédure pas à pas montre comment créer un rapport tabulaire simple dans un projet d'application Windows Microsoft Visual Studio 2008 reposant sur l'exemple de base de données AdventureWorks. Vous aller ajouter un modèle de rapport à votre projet, définir des informations de connexion pour la base de données AdventureWorks, définir une requête, ajouter une région de données de tableau et ajouter un contrôle Windows Form ReportViewer à un formulaire Windows afin que le rapport puisse être visualisé par les utilisateurs de l'application.

Configuration requise

Pour suivre cette procédure pas à pas, vous devez avoir accès à l'exemple de base de données AdventureWorks pour SQL Server 2005. Si vous utilisez une ancienne version d'AdventureWorks, la requête échoue. Pour plus d'informations sur la façon d'obtenir la version SQL Server 2005 d'Adventureworks, consultez Procédure pas à pas : installation de la base de données AdventureWorks.

Cette procédure pas à pas suppose que vous maîtrisez les requêtes Transaction-SQL et les objets DataSet et DataTable ADO.NET.

Pour créer un projet d'application Windows

  1. Ouvrez Visual Studio. Dans le menu Fichier, pointez sur Nouveau, puis sélectionnez Projet.

  2. Dans le volet Types de projets, choisissez Visual Basic.

  3. Dans le volet Modèles, choisissez Application Windows pour créer une application Microsoft Windows.

  4. Dans la zone Nom, tapez SimpleReport.

  5. Dans la zone Emplacement, entrez le répertoire dans lequel vous désirez enregistrer votre projet ou cliquez sur le bouton Parcourir pour naviguer jusqu'à lui.

    Le Concepteur Windows Forms s'ouvre et affiche le formulaire Form1 du projet que vous avez créé.

  6. Cliquez sur le formulaire. Dans le menu Affichage, choisissez Fenêtre Propriétés. Développez la propriété Size pour afficher Width et Height. Affectez à Width la valeur 500 pixels.

Pour définir une connexion de source de données et une table de données

  1. Dans l'Explorateur de solutions, cliquez avec le bouton droit sur le projet nommé SimpleReport (pas la solution), pointez sur Ajouter, puis sélectionnez Nouvel élément. Si la fenêtre Explorateur de solutions n'est pas visible, dans le menu Affichage, cliquez sur Explorateur de solutions.

  2. Dans la boîte de dialogue Ajouter un nouvel élément, cliquez sur DataSet. Tapez un nom pour le dataset, puis cliquez sur Ajouter. Le nom par défaut est DataSet1.xsd.

    Un nouveau fichier XSD est ajouté au projet et le Concepteur de DataSet s'ouvre.

  3. Dans le menu Affichage, cliquez sur Concepteur. Ouvrez la boîte à outils, et faites glisser un contrôle TableAdapter sur l'aire de conception de DataSet.

    L'Assistant Configuration de TableAdapter démarre.

  4. Dans la page Choisir votre connexion de données, cliquez sur Nouvelle connexion.

  5. Dans la page Ajouter une connexion, procédez comme suit :

    • Dans la zone Source de données, sélectionnez Microsoft SQL Server.

    • Dans la zone Nom du serveur, entrez le nom du serveur qui héberge la base de données AdventureWorks.

      L'instance SQL Server Express par défaut est (local)\sqlexpress.

    • Dans la liste déroulante, cliquez sur AdventureWorks .

    • Cliquez sur OK pour revenir dans l'Assistant, puis cliquez sur Suivant.

  6. Dans la page Enregistrer la chaîne de connexion dans le fichier de configuration de l'application, tapez un nom pour la chaîne de connexion ou acceptez la valeur par défaut AdventureWorksConnectionString. Cliquez sur Suivant.

  7. Dans la page Choisissez un type de commande, sélectionnez Utiliser des instructions SQL, puis cliquez sur Suivant.

  8. Dans la page Entrez une instruction SQL, entrez la requête Transact-SQL suivante pour récupérer les données des ventes de la base de données AdventureWorks, puis cliquez sur Terminer :

    SELECT  S.OrderDate, S.SalesOrderNumber, S.TotalDue AS TotalSales, 
            C.FirstName, C.LastName
    FROM    HumanResources.Employee E INNER JOIN
            Person.Contact C ON E.ContactID = C.ContactID INNER JOIN
            Sales.SalesOrderHeader S ON E.EmployeeID = S.SalesPersonID
    

    Vous pouvez également cliquer sur le bouton Générateur de requêtes et utiliser le Générateur de requêtes pour créer une requête et la valider à l'aide du bouton Exécuter la requête.

    Le Concepteur de Dataset affiche désormais la définition DataTable pour DataTable1 avec les champs nommés à partir des colonnes et des alias de colonnes de la requête (OrderDate, SalesOrderNumber, TotalSales, FirstName et LastName). Vous devez utiliser ces champs à partir de la fenêtre Source de données lorsque vous liez des données aux régions de données de rapport.

    NoteRemarque

    Si vous devez modifier les champs de la table de données, cliquez avec le bouton droit sur l'en-tête DataTable1 ou DataTable1TableAdapter dans la page Concepteur de DataSet. Choisissez Configurer, l'Assistant Configuration de TableAdapter redémarre.

Pour ajouter un fichier de définition de rapport

  1. Dans le menu Projet, pointez sur AjouterNouvel élément.

  2. Dans la boîte de dialogue Ajouter un nouvel élément, cliquez sur Rapport.

  3. Dans la zone Nom, tapez Sales Orders.rdlc, puis cliquez sur Ajouter pour ouvrir une aire de conception graphique.

    L'aire de conception graphique fait partie du composant Concepteur de rapports de Visual Studio 2008.

Pour ajouter un tableau à la mise en page de rapport

  1. Avec Sales Orders.rdlc en mode Design graphique, dans le menu Affichage, sélectionnez la boîte à outils.

    La boîte à outils s'ouvre.

  2. Dans la section Données de la boîte à outils, cliquez sur Tableau, puis cliquez sur l'aire de conception de rapports.

    Le Concepteur de rapports affiche un tableau composé de trois colonnes, couvrant la largeur du rapport.

  3. Cliquez sur le tableau pour que les poignées de ligne et de colonne apparaissent au-dessus et en regard du tableau.

  4. Cliquez avec le bouton droit sur la poignée de la première colonne, puis cliquez sur Insérer une colonne à gauche.

  5. Dans la fenêtre Propriétés de table1, développez le nœud Size. Par défaut, la fenêtre Propriétés est ancrée sous l'Explorateur de solutions. Vous pouvez également ouvrir cette fenêtre dans le menu Affichage en sélectionnant Fenêtre Propriétés.

  6. Attribuez à la propriété Width du nœud Size la valeur 4,8 in. Ce paramètre définit la largeur du tableau et égalise la largeur des colonnes à afficher dans le formulaire.

  7. Dans le Concepteur de rapports, cliquez sur l'aire de conception.

  8. Dans la fenêtre Propriétés, développez le nœud Size et attribuez à Width la valeur 5 in .

  9. Dans la fenêtre Sources de données, cliquez sur le nœud DataTable1 pour le développer et afficher les champs de données. Puis, procédez comme suit :

    • Faites glisser le champ LastName de la fenêtre Sources de données vers la ligne (de détails) du milieu de la première colonne du tableau.

    • Lorsque vous déposez le champ dans la cellule du milieu, deux événements se produisent.

      Premièrement, la cellule de détails affiche le texte suivant : =Fields!LastName.Value. Ce texte est une expression de champ qui spécifie les valeurs de données du champ LastName. Les champs ajoutés à une ligne de détails sont toujours spécifiés sous forme d'expressions.

      Deuxièmement, une valeur d'en-tête de colonne est placée automatiquement dans la première ligne, juste au-dessus de l'expression de champ. Par défaut, la colonne est générée à partir du nom du champ. Pour les noms de champs qui utilisent la casse Pascal, les noms de colonnes sont formés de mots séparés par un espace et introduits par une majuscule. Par exemple, LastName devient Last Name.

    • Faites glisser le champ OrderDate de la fenêtre Source de données vers la ligne (de détails) du milieu de la seconde colonne du tableau.

    • Faites glisser le champ SalesOrderNumber de la fenêtre Source de données vers la ligne (de détails) du milieu de la troisième colonne du tableau.

    • Faites glisser le champ TotalSales de la fenêtre Sources de données vers la ligne (de détails) du milieu de la dernière colonne du tableau.

    L'illustration suivante représente une région de données de tableau qui a été remplie avec les champs : LastName, OrderDate, SalesOrderNumber et TotalSales.

    Tableau de définition de rapport par défaut

Pour ajouter le contrôle ReportViewer à votre formulaire

  1. Dans l'Explorateur de solutions, cliquez sur Form1.vb.

  2. Dans le menu Affichage, choisissez Concepteur.

  3. Dans la section Données de la boîte à outils, faites glisser le contrôle ReportViewer vers le formulaire.

  4. Cliquez dans le formulaire. Dans la fenêtre Propriétés, développez Size. Définissez les propriétés de largeur (Width) et hauteur (Height) selon vos besoins.

  5. Ouvrez le panneau des balises actives du contrôle ReportViewer en cliquant sur le triangle dans le coin supérieur droit du contrôle. Cliquez sur la liste déroulante Choisir un rapport, puis sélectionnez Sales Orders.rdlc.

  6. Dans le panneau des balises actives, cliquez sur Ancrer dans le conteneur parent.

    Dans la partie restante de cette procédure pas à pas, vous pouvez créer votre application et afficher le rapport dans le formulaire à tout moment. Si vous souhaitez voir de quelle manière les modifications incrémentielles de votre conception de rapport affecte le rapport final, créez et affichez le rapport en tant que dernière étape de chacune des procédures suivantes.

  7. (Facultatif) Appuyez sur la touche F5 pour créer votre application et visualiser le rapport dans le formulaire.

    Le diagramme suivant montre la définition de rapport en cours rendue dans votre formulaire. Le format par défaut comprend les éléments suivants : une ligne d'en-tête, un ligne de détails pour chaque ligne de la table de données et une ligne de pied de page à la dernière page du rapport.

    Tableau par défaut dans le rapport rendu

Pour mettre en forme un champ de date

  1. Cliquez avec le bouton droit sur la cellule qui contient l'expression de champ OrderDate, puis cliquez sur Propriétés. La boîte de dialogue Propriétés de la zone de texte apparaît.

  2. Sélectionnez l'onglet Format et cliquez sur le bouton Parcourir ( ) pour ouvrir la boîte de dialogue Choisir le format.

    Dans la zone Format, sélectionnez Standard, Date, puis sélectionnez un format de date.

  3. Cliquez sur OK pour fermer la boîte de dialogue Choisir le format, puis cliquez à nouveau sur OK pour fermer la boîte de dialogue Propriétés de la zone de texte.

    Boîte de dialogue Choisir le format

  4. (Facultatif) Appuyez sur la touche F5 pour créer votre application et visualiser le rapport. Dans ce cas, la colonne de date s'affiche avec la mise en forme que vous venez de lui appliquer.

Pour mettre en forme un champ de devise

  1. Cliquez avec le bouton droit sur la cellule qui contient l'expression de champ TotalSales, puis cliquez sur Propriétés.

  2. Sélectionnez l'onglet Format et cliquez sur le bouton Parcourir ( ) pour ouvrir la boîte de dialogue Choisir le format.

  3. Dans la zone Format, sélectionnez Standard, Devise, puis sélectionnez un format monétaire.

  4. Cliquez sur OK, puis cliquez à nouveau sur OK pour fermer la boîte de dialogue Propriétés de la zone de texte.

    Boîte de dialogue Choisir le format

  5. (Facultatif) Appuyez sur la touche F5 pour créer votre application et visualiser le rapport. Dans ce cas, les valeurs de la colonne Total Sales s'affichent dans un format monétaire.

Pour mettre en forme des en-têtes de tableau

  1. Cliquez sur le tableau pour que les poignées de ligne et de colonne apparaissent au-dessus et en regard du tableau.

    NoteRemarque

    Les poignées sont des carrés gris qui apparaissent au-dessus et en regard du tableau. Les poignées vous permettent d'effectuer différentes actions sur les colonnes, les lignes et le tableau lui-même. Les poignées qui s'étendent le long de la partie supérieure du tableau sont des poignées de colonne. Les poignées qui s'étendent le long du bord du tableau sont des poignées de ligne. La poignée qui se trouve à l'intersection des poignées de colonne et de ligne s'appelle la poignée d'angle. Pour voir un exemple de poignées de tableau, consultez Ajout de régions de données de tableau (Concepteur de rapports Visual Studio).

  2. Sélectionnez les poignées de la première ligne, qui contient les étiquettes d'en-tête de colonne, puis cliquez sur Gras.

  3. Cliquez sur la ligne d'en-tête du tableau, puis sur Couleur d'arrière-plan. Cliquez sur l'onglet Web et sélectionnez MistyRose. Cliquez sur OK.

  4. (Facultatif) Cliquez sur la touche F5 pour créer votre application et visualiser le rapport. Le diagramme suivant montre le rapport mis en forme.

    Afficher le tableau par défaut avec mise en forme

Pour définir un groupe pour un rapport tabulaire

  1. Cliquez sur le tableau pour que les poignées de ligne et de colonne apparaissent au-dessus et en regard du tableau.

  2. Cliquez avec le bouton droit sur la poignée de n'importe quelle ligne, puis cliquez sur Insérer un groupe.

  3. Sous l'onglet Général, pour Grouper sur, sélectionnez =Fields!LastName.Value dans la première ligne et =Fields!FirstName.Value dans la deuxième ligne. Cette opération permet de regrouper les données par nom de délégué commercial. Notez que vous pouvez regrouper les données selon des champs qui ne sont pas utilisés dans la région de données de tableau mais qui sont disponibles dans les champs DataTable1.

    Onglet Général, page Propriétés de regroupement et de tri

  4. Cliquez sur OK.

    Un en-tête et un pied de page de groupe sont ajoutés au tableau.

Pour synthétiser les données par groupe

  1. Cliquez sur la ligne d'en-tête de groupe, puis sur Couleur d'arrière-plan. Choisissez l'onglet Web et sélectionnez LightCyan. Cliquez sur OK.

  2. Remplacez le champ TotalSales répété à chaque ligne par une expression dans l'en-tête de groupe qui représente un total combiné du groupe.

    1. Cliquez avec le bouton droit sur l'en-tête de groupe pour Total Sales et choisissez Propriétés. La boîte de dialogue Propriétés de la zone de texte s'ouvre.

    2. Copiez le texte ci-dessous et collez-le dans la liste déroulante Valeur.

      =Sum(Fields!TotalSales.Value)
      
    3. Appliquez la mise en forme monétaire à cette zone de texte.

  3. Remplacez le nom répété à chaque ligne par une expression dans l'en-tête de groupe qui inclut deux lignes. La première ligne correspond au prénom et au nom. La deuxième ligne correspond au nombre des ventes dont la valeur n'était pas NULL.

    1. Sélectionnez l'expression dans la ligne de détails Last Name et supprimez-la.

    2. Cliquez avec le bouton droit dans la ligne d'en-tête de groupe correspond à Last Name et choisissez Expression. Copiez le texte suivant et collez-le dans la zone de dialogue Modifier l'expression.

      Fields!FirstName.Value + " " + Fields!LastName.Value + ": " + vbCrLf + Count(Fields!SalesOrderNumber.Value).ToString()
      

    Le diagramme suivant montre l'éditeur d'expression après cette étape.

    Boîte de dialogue Modifier l'expression de la zone de texte de groupe

  4. (Facultatif) Appuyez sur la touche F5 pour créer votre application et visualiser le rapport. Le diagramme ci-dessous montre les lignes du tableau regroupées par nom de délégué commercial. Chaque en-tête de groupe résume les lignes de détails du groupe, en affichant le nom du délégué commercial, le nombre de ventes et la quantité totale vendue.

    Vue du groupe de tableaux dans un rapport traité

Pour trier les groupes dans un rapport tabulaire

  1. Sélectionnez la région de données de table, puis ouvrez Propriétés du tableau.

  2. Cliquez sur l'onglet Groupes. Le seul groupe défini, table1_Group1, est automatiquement sélectionné. Cliquez sur Modifier. La boîte de dialogue Regroupement et tri s'ouvre.

    Vérifiez que la boîte de dialogue ouverte est Propriétés de regroupement et de tri, et non Propriétés du tableau. L'onglet Tri dans la boîte de dialogue Propriétés du tableau contrôle le mode de tri des lignes de détails, et non celui des groupes. Vous allez définir le tri des données de détail dans la procédure suivante.

  3. Cliquez sur l'onglet Tri. Dans la zone Trier sur, sélectionnez < Expression... > dans la liste déroulante. Tapez l'expression à trier dans la zone Modifier l'expression. Par exemple :

    =Count(Fields!SalesOrderNumber.Value)

  4. Cliquez sur OK.

    Boîte de dialogue Groupement et tri

  5. (Facultatif) Appuyez sur la touche F5 pour créer votre application et visualiser le rapport. Le rapport est maintenant trié en fonction du nombre de ventes réalisées par chaque délégué commercial.

    Vue du groupe de tableaux trié

Pour trier les lignes de détails d'un groupe dans un rapport tabulaire

  1. Cliquez sur le tableau pour que les poignées de ligne et de colonne apparaissent au-dessus et en regard du tableau.

  2. Cliquez avec le bouton droit sur la poignée d'angle, puis cliquez sur Propriétés. La boîte de dialogue Propriétés du tableau s'ouvre.

    NoteRemarque

    La poignée d'angle se trouve à l'intersection des poignées de colonne et de ligne.

  3. Sous l'onglet Tri, dans la zone Trier sur, sélectionnez =Fields!TotalSold.Value. Dans la zone Direction, sélectionnez Décroissant. Les données de détail sont triées par quantité vendue en commençant par les valeurs les plus élevées.

  4. Cliquez sur OK.

    La boîte de dialogue Propriétés du tableau doit être similaire au diagramme suivant.

    Boîte de dialogue Propriétés du tableau, onglet Tri

  5. (Facultatif) Appuyez sur la touche F5 pour créer votre application et visualiser le rapport. Le diagramme suivant présente la page 2 du rapport obtenu, pour montrer les groupes contenant plusieurs lignes de détails.

    Vue des données des rapports groupés triées sur la ligne de détails

Pour ajouter des données de synthèse au pied de page dans un rapport tabulaire

  1. Sélectionnez les cellules Sales Order et Total Sales dans la ligne de pied de page du tableau. Cliquez avec le bouton droit sur les cellules sélectionnées et choisissez Fusionner les cellules.

    Cette procédure libère de l'espace pour mettre en forme la somme de toutes les ventes pour le tableau.

  2. Cliquez avec le bouton droit dans la cellule unique et fusionnée et choisissez Propriétés.

  3. Dans la liste déroulante Valeur, tapez l'expression suivante :

    =Sum(Fields!TotalSales.Value)

  4. Appliquez la mise en forme monétaire à la cellule fusionnée.

  5. Cliquez dans la cellule de zone de texte située en regard des cellules fusionnées, et créez une étiquette. Par exemple, tapez Total vendu :. Notez qu'il ne s'agit pas d'une expression, mais d'un simple texte.

  6. (Facultatif) Définissez la couleur d'arrière-plan sur la ligne de pied de page pour qu'elle corresponde à celle de la ligne d'en-tête.

    Le diagramme suivant montre la définition de table.

    Tableau de définition de rapport avec pied de page

  7. (Facultatif) Appuyez sur la touche F5 pour créer votre application et visualiser le rapport. Dans le rapport rendu, cliquez sur le bouton LastPage dans la barre d'outils Rapports pour accéder à la dernière page du rapport. Faites défiler vers le bas pour afficher la valeur du total des ventes.

    Vue du tableau avec résultats de pied de page

Voir aussi

Référence

Microsoft.Reporting.WinForms.ReportViewer.Drillthrough
Microsoft.Reporting.WinForms.LocalReport.SubreportProcessing
Microsoft.Reporting.WebForms.ReportViewer.Drillthrough
Microsoft.Reporting.WebForms.LocalReport.SubreportProcessing

Concepts

Utilisation du panneau des balises actives des tâches ReportViewer

Autres ressources

Exemples et procédures pas à pas