Crystal Reports est l'outil de rapport standard pour Visual Studio .NET utilisé pour afficher des données de qualité de présentation. Vous pouvez afficher des totaux à plusieurs niveaux, des graphiques pour analyser les données et bien plus encore dans Crystal Reports. La création d'un rapport Crystal nécessite un codage minimal car il est créé dans l'interface Designer. Il est disponible en tant que fonctionnalité intégrée de Microsoft Visual Studio .NET, Borland Delphi et C # Builder.
Avantages de Crystal Reports
Certains des principaux avantages de l'utilisation de Crystal Reports sont les suivants:
Modèles d'implémentation
Crystal Reports a besoin de pilotes de base de données pour se connecter à la source de données pour accéder aux données. Crystal Reports dans .net prend en charge deux méthodes pour accéder aux données à partir d'une source de données:
La méthode Pull
Lorsque ce modèle est utilisé pour accéder aux données de la source de données, le pilote de base de données récupère directement les données de la source de données. Ce modèle ne nécessite pas que le développeur écrive du code pour créer une connexion et récupérer des données de la source de données. C'est le rapport Crystal qui gère les commandes SQL de connexion à l'aide du pilote spécifié.
La méthode push
Lorsque ce modèle est utilisé pour accéder aux données de la source de données, le développeur écrit le code pour se connecter à la source de données et récupérer les données. Les données de la source de données sont mises en cache dans l'ensemble de données et plusieurs rapports Crystal accèdent aux données de l'ensemble de données. Les performances peuvent être optimisées de cette manière en utilisant le partage de connexion et en limitant manuellement le nombre d'enregistrements transmis au rapport.
Types de rapports Crystal
Crystal Report Designer peut charger des rapports inclus dans le projet ainsi que ceux qui sont indépendants du projet.
Rapport fortement typé
Lorsque vous ajoutez un fichier de rapport dans le projet, il devient un rapport "fortement typé". Dans ce cas, vous aurez l'avantage de créer directement une instance de l'objet de rapport, ce qui pourrait réduire quelques lignes de code, et de la mettre en cache pour améliorer les performances. Le fichier .vb associé, qui est masqué, peut être affiché à l'aide de l'icône "afficher tous les fichiers" de l'éditeur dans l'Explorateur de solutions.
Rapport non tapé
Les rapports qui ne sont pas inclus dans le projet sont des rapports "non dactylographiés". Dans ce cas, vous devrez créer une instance de l'objet "ReportDocument" du Crystal Report Engine et y charger manuellement le rapport.
Création de Crystal Reports
Vous pouvez créer un rapport Crystal en utilisant trois méthodes:
Utilisation de la méthode Pull
Création manuelle de Crystal Reports.
Nous utiliserions les étapes suivantes pour implémenter Crystal Reports à l'aide du modèle Pull:
Étapes pour créer le rapport, c'est-à-dire le fichier .rpt
1) Ajoutez un nouveau Crystal Report au formulaire Web en cliquant avec le bouton droit sur "Explorateur de solutions", en sélectionnant "Ajouter" -> "Ajouter un nouvel élément" -> "Crystal Report".
2) Dans la fenêtre contextuelle "Crystal Report Gallery", sélectionnez la case d'option "En tant que rapport vierge" et cliquez sur "ok".
3) Cela devrait ouvrir le fichier de rapport dans Crystal Report Designer.
4) Faites un clic droit sur la "Section Détails" du rapport et sélectionnez "Base de données" -> "Ajouter / Supprimer une base de données".
5) Dans la fenêtre contextuelle "Database Expert", développez l'option "OLE DB (ADO)" en cliquant sur le signe "+", qui devrait faire apparaître une autre fenêtre contextuelle "OLE DB (ADO)".
6) Dans la fenêtre contextuelle "OLE DB (ADO)", sélectionnez "Fournisseur Microsoft OLE DB pour SQL Server" et cliquez sur Suivant.
7) Spécifiez les informations de connexion.
8) Cliquez sur "Suivant" puis sur "Terminer"
9) Vous devriez maintenant pouvoir voir l'expert de la base de données montrant la table qui a été sélectionnée
10) Développez la base de données "Pubs", développez les "Tables", sélectionnez la table "Magasins" et cliquez sur ">" pour l'inclure dans la section "Tables sélectionnées".
Remarque: Si vous ajoutez plusieurs tables dans l'expert de base de données et que les tables ajoutées ont des champs correspondants, lorsque vous cliquez sur le bouton OK après avoir ajouté les tables, les liens entre les tables ajoutées s'affichent sous l'onglet Liens. Vous pouvez supprimer le lien en cliquant sur le bouton Effacer les liens.
11) L'explorateur de champs devrait maintenant vous montrer la table sélectionnée et ses champs sous la section "Champs de base de données", dans la fenêtre de gauche.
12) Faites glisser et déposez les champs obligatoires dans la section "Détails" du rapport. Les noms de champ apparaissent automatiquement dans la section "En-tête de page" du rapport. Si vous souhaitez modifier le texte d'en-tête, cliquez avec le bouton droit sur le texte de la section "En-tête de page", sélectionnez l'option "Modifier l'objet texte" et modifiez-le.
13) Enregistrez-le et nous avons terminé.
1) Faites glisser et déposez le "Crystal Report Viewer>" de la boîte à outils Web Forms sur la page .aspx
2) Ouvrez la fenêtre des propriétés du contrôle Crystal Report Viewer.
3) Cliquez sur la [...] à côté de la propriété "Liaison de données" et ouvrez la fenêtre contextuelle de liaison de données
4) Sélectionnez "Source du rapport".
5) Sélectionnez le bouton radio "Expression de liaison personnalisée", en bas à droite de la fenêtre et spécifiez le nom et le chemin du fichier échantillon .rpt comme indiqué sur la fig.
6) Vous devriez pouvoir voir Crystal Report Viewer vous montrer un aperçu du fichier de rapport réel en utilisant des données factices et ceci termine l'insertion des contrôles Crystal Report Viewer et la définition de ses propriétés.
Remarque: Dans l'exemple précédent, le contrôle CrystalReportViewer a pu charger directement les données réelles lors de la conception même lorsque le rapport a été enregistré avec les données. Dans ce cas, il n'affichera pas les données pendant la conception car elles ne sont pas enregistrées avec les données - au lieu de cela, il s'affichera avec des données factices pendant la conception et ne récupérera les données appropriées qu'au moment de l'exécution.
7) Appelez la méthode Databind sur l'événement de chargement de page du fichier Code Behind (.aspx.vb). Créez et exécutez votre page .aspx. La sortie ressemblerait à ceci.
Utilisation d'un modèle PUSH
1) Faites un clic droit sur "Solution Explorer", sélectionnez "Ajouter" -> sélectionnez "Ajouter un nouvel élément" -> Sélectionnez "DataSet"
2) Faites glisser et déposez la table "Stores" (dans la base de données PUBS) depuis l'élément "SQL Server" sous "Server Explorer".
3) Cela devrait créer une définition de la table "Stores" dans le Dataset
Le fichier .xsd créé de cette façon contient uniquement les définitions de champ sans aucune donnée. Il appartient au développeur de créer la connexion à la base de données, de remplir le jeu de données et de l'alimenter dans Crystal Report.
4) Créez le fichier de rapport en suivant les étapes mentionnées précédemment. La seule différence ici est qu'au lieu de se connecter à la base de données via Crystal Report pour accéder à la table, nous utiliserions notre DataSet que nous venons de créer.
5) Après avoir créé le fichier .rpt, faites un clic droit sur la section "Détails" du fichier de rapport, sélectionnez "Ajouter / Supprimer la base de données"
6) Dans la fenêtre "Database Expert", développez "Project Data" (au lieu de "OLE DB" qui a été sélectionné dans le cas du modèle PULL), développez "ADO.NET DataSet", "DataSet1" et sélectionnez " Table "Magasins".
7) Inclure la table "Stores" dans la section "Tables sélectionnées" en cliquant sur ">" puis sur "ok"
8) Suivez les étapes restantes pour créer la mise en page du rapport comme mentionné précédemment dans le modèle PULL pour terminer la création du fichier de rapport .rpt
III. Création d'un contrôle CrystalReportViewer
9) Suivez les étapes mentionnées précédemment dans le modèle PULL pour créer un contrôle Crystal Report Viewer et définir ses propriétés.
Code derrière les modifications de page: 10) Appelez ce sous-programme dans votre événement de chargement de page:
Sub BindReport ()
Dim myConnection As New SqlClient.SqlConnection ()
myConnection.ConnectionString = "server = (local) \ NetSDK; database = pubs; Trusted_Connection = yes"
Dim MyCommand As New SqlClient.SqlCommand ()
MyCommand.Connection = myConnection
MyCommand.CommandText = "Sélectionner * dans les magasins"
MyCommand.CommandType = CommandType.Text
Dim MyDA As New SqlClient.SqlDataAdapter ()
MyDA.SelectCommand = MyCommand
Dim myDS as New Dataset1 ()
'Ceci est notre DataSet créé au moment du design
MyDA.Fill (myDS, "Stores")
«Vous devez utiliser le même nom que celui de votre ensemble de données que vous avez créé au moment de la conception
Dim oRpt comme nouveau CrystalReport1 ()
'Il s'agit du fichier Crystal Report créé au moment du design
oRpt.SetDataSource (myDS)
'Définissez la propriété SetDataSource du rapport sur l'ensemble de données
CrystalReportViewer1.ReportSource = oRpt
'Définissez la propriété Crystal Report Viewer sur l'objet oRpt Report que nous avons créé
End Sub
Remarque: Dans le code ci-dessus, vous remarquerez que l'objet oRpt est une instance du fichier de rapport "Strongly Typed". Si nous devions utiliser un rapport "UnTyped", nous devions alors utiliser un objet ReportDocument et y charger manuellement le fichier de rapport.
Amélioration de Crystal Reports
Accès aux données filtrées via les rapports Crystal
Effectuez les étapes suivantes pour la même chose.
Le champ de nom de groupe est créé, car les données doivent être regroupées sur la base de l'identifiant de chat, par exemple.
Créer une formule
Supposons que le rapport nécessite également des calculs. Effectuez les étapes suivantes:
Exportation de rapports Crystal
Lorsque vous utilisez Crystal Reports dans un formulaire Web, le contrôle CrystalReportViewer n'a pas les boutons d'exportation ou d'impression contrairement à celui de Windows Form. Cependant, nous pouvons obtenir des fonctionnalités d'exportation et d'impression grâce au codage. Si nous exportons au format PDF, Acrobat peut gérer l'impression pour nous, ainsi que l'enregistrement d'une copie du rapport.
Vous pouvez choisir d'exporter votre fichier de rapport dans l'un des formats suivants:
o PDF (format de document portable)
o DOC (document MS Word)
o XLS (feuille de calcul MS Excel)
o HTML (Hyper Text Markup Language - compatible 3.2 ou 4.0)
o RTF (Rich Text Format)
Pour ce faire, vous pouvez placer un bouton sur votre page pour déclencher la fonctionnalité d'exportation.
Lorsque vous utilisez Crystal Reports dans ASP.NET dans un formulaire Web, le contrôle CrystalReportViewer n'a pas les boutons d'exportation ou d'impression comme celui de Windows Form. Nous pouvons toujours atteindre un certain degré de fonctionnalité d'exportation et d'impression en écrivant notre propre code pour gérer l'exportation. Si nous exportons au format PDF, Acrobat peut être utilisé pour gérer l'impression pour nous et enregistrer une copie du rapport.
Exportation d'un fichier de rapport créé à l'aide du modèle PULL
Ici, le Crystal Report se charge de se connecter à la base de données et de récupérer les enregistrements requis, de sorte que vous n'auriez qu'à utiliser le code ci-dessous dans l'événement du bouton.
Sous-bouton privé1_Click (expéditeur ByVal en tant que System.Object, ByVal e en tant que System.EventArgs) gère Button1.Click
Dim myReport As CrystalReport1 = New CrystalReport1 ()
'Remarque: nous créons ici une instance du fichier Crystal Report fortement typé.
Dim DiskOpts As CrystalDecisions.Shared.DiskFileDestinationOptions = New CrystalDecisions.Shared.DiskFileDestinationOptions
myReport.ExportOptions.ExportDestinationType = CrystalDecisions. [Shared] .ExportDestinationType.DiskFile
«Vous avez également la possibilité d'exporter le rapport vers d'autres sources
'comme Microsoft Exchange, MAPI, etc.
myReport.ExportOptions.ExportFormatType = CrystalDecisions. [Shared] .ExportFormatType.PortableDocFormat
«Ici, nous exportons le rapport au format .pdf. Vous pouvez
'choisissez également l'un des autres formats spécifiés ci-dessus.
DiskOpts.DiskFileName = "c: \ Output.pdf"
`` Si vous ne spécifiez pas le chemin exact ici (c'est-à-dire, y compris
«le lecteur et l'annuaire),
"alors vous trouverez votre fichier de sortie atterrissant dans le
'c: \ WinNT \ System32 - au moins en cas de
«Système Windows 2000
myReport.ExportOptions.DestinationOptions = DiskOpts
'Le rapport