Création et mise en forme d'états Crystal Reports avec VS .NET
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:
- Développement rapide de rapports puisque l'interface du concepteur faciliterait le travail de codage pour le programmeur.
- Peut l'étendre à des rapports complexes avec des graphiques interactifs et améliorer la compréhension du modèle d'entreprise
- Expose un modèle d'objet de rapport, peut interagir avec d'autres contrôles sur le formulaire Web ASP.NET
- Peut exporter par programme les rapports dans des formats largement utilisés tels que .pdf, .doc, .xls, .html et .rtf
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:
- Manuellement, c'est-à-dire à partir d'un document vierge
- Utilisation de Standard Report Expert
- À partir d'un rapport existant
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:
- Créez le fichier .rpt (à partir de zéro) et définissez les connexions de base de données nécessaires à l'aide de l'interface Crystal Report Designer.
- Placez un contrôle CrystalReportViewer à partir de la boîte à outils sur la page .aspx et définissez ses propriétés pour pointer vers le fichier .rpt que nous avons créé à l'étape précédente.
- Appelez la méthode databind à partir de votre code derrière la page.
É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é.
- Création d'un contrôle Crystal Report Viewer
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
- Créez un ensemble de données pendant la conception.
- Créez le fichier .rpt (à partir de zéro) et faites-le pointer vers l'ensemble de données que nous avons créé à l'étape précédente.
- Placez un contrôle CrystalReportViewer sur la page .aspx et définissez ses propriétés pour pointer vers le fichier .rpt que nous avons créé à l'étape précédente.
- Dans votre code derrière la page, écrivez le sous-programme pour établir les connexions à la base de données et remplir l'ensemble de données que nous avons créé précédemment à l'étape un.
- Appelez la méthode Databind à partir de votre code derrière la page.
- Création d'un ensemble de données au moment de la conception pour définir les champs des rapports
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.
- Création du fichier .rpt
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.
- Générez un ensemble de données qui contient des données selon vos critères de sélection, dites "où (coût> 1000)".
- Créez le rapport Crystal manuellement. Cela ressemblerait à ceci.
- Cliquez avec le bouton droit sur les champs Nom du groupe dans la fenêtre de l'Explorateur de champs et sélectionnez Insérer un groupe dans le menu contextuel. Sélectionnez le nom de champ approprié dans la première zone de liste, comme indiqué.
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.
- Un signe plus est ajouté devant le nom de groupe déposé dans la fenêtre de l'explorateur de champs. Le champ Nom du groupe doit être ajouté à la section En-tête de groupe du Crystal Report. Notez que cela se fait automatiquement.
- Cliquez avec le bouton droit sur le champ Total cumulé et sélectionnez Nouveau. Remplissez les valeurs requises via> et la liste déroulante.
- Le nombre de catégories devant être affiché pour le total des catégories, faites glisser RTotal0 vers le pied de page du rapport.
Créer une formule
Supposons que le rapport nécessite également des calculs. Effectuez les étapes suivantes:
- Cliquez avec le bouton droit sur les champs de formule dans la fenêtre de l'explorateur de champs et sélectionnez nouveau. Entrez un nom pertinent, par exemple un pourcentage.
- Une formule peut être créée à l'aide des trois volets de la boîte de dialogue. Le premier volet contient tous les champs de rapport Crystal, le second contient toutes les fonctions, telles que Avg, Sin, Sum, etc. et le troisième contient des opérateurs tels que les opérateurs d'arithmétique, de conversion et de comparaison.
- Double-cliquez sur n'importe quel nom de champ pertinent dans le volet Forst, par exemple, il y a un champ comme l'avance d'une table CustOrder. Développez ensuite Arithmétique dans le troisième volet et double-cliquez sur Opérateur de division.
- Double-cliquez sur un autre nom de champ du premier que vous souhaitez utiliser comme diviseur du premier nom de champ déjà sélectionné, par exemple CustOrder.Cost.
- Double-cliquez sur Multiplier à partir du troisième volet et tapez 100.
- La formule apparaîtrait comme {CustOrder.Advance} / {CustOrder.Cost} * 100.
- Enregistrez la formule et fermez l'Éditeur de formule: boîte de dialogue @Percentage.
- Insérez le champ de formule de pourcentage dans le volet d'informations.
- Hébergez le rapport Crystal.
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