Crystal Reports est un outil puissant pour générer des rapports. Si vous utilisez VB.NET, il est possible d’intégrer Crystal Reports pour afficher, manipuler et exporter des rapports directement dans votre application.
.rpt à votre projet.Crystal Reports : CrystalDecisions.CrystalReports.EngineCrystalDecisions.ReportSourceCrystalDecisions.SharedCrystalDecisions.WebCrystalDecisions.Windows.FormsPour afficher le rapport dans une application Windows Forms, vous devez ajouter un CrystalReportViewer à votre formulaire.
CrystalReportViewer : Form1).Ajoutez le code pour charger et afficher le rapport dans votre formulaire.
Voici un exemple de code pour ouvrir et afficher un rapport Crystal Reports dans une application Windows Forms :
Imports CrystalDecisions.CrystalReports.Engine
Imports CrystalDecisions.Shared
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Try
' Créer une instance du rapport
Dim reportDocument As New ReportDocument()
' Chemin du fichier Crystal Report (.rpt)
Dim reportPath As String = "C:\Chemin\Vers\VotreRapport.rpt"
reportDocument.Load(reportPath)
' Configuration de la source de données (si nécessaire)
Dim connectionInfo As New ConnectionInfo()
connectionInfo.ServerName = "NomServeur" ' Nom du serveur ou chemin du fichier
connectionInfo.DatabaseName = "NomBaseDeDonnees" ' Nom de la base de données
connectionInfo.UserID = "VotreUtilisateur" ' Identifiant utilisateur
connectionInfo.Password = "VotreMotDePasse" ' Mot de passe utilisateur
' Appliquer les informations de connexion à toutes les tables du rapport
For Each table As Table In reportDocument.Database.Tables
Dim logonInfo As TableLogOnInfo = table.LogOnInfo
logonInfo.ConnectionInfo = connectionInfo
table.ApplyLogOnInfo(logonInfo)
Next
' Lier le rapport au CrystalReportViewer
CrystalReportViewer1.ReportSource = reportDocument
' Rafraîchir le rapport pour s'assurer que les données sont à jour
CrystalReportViewer1.Refresh()
Catch ex As Exception
MessageBox.Show($"Erreur lors du chargement du rapport : {ex.Message}", "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Sub
End Class
reportDocument.Load(reportPath).ConnectionInfo.ApplyLogOnInfo pour chaque table du rapport pour garantir que les informations de connexion sont appliquées.CrystalReportViewer permet d’afficher le rapport directement dans le formulaire.Vous pouvez exporter un rapport directement au format PDF :
Dim exportPath As String = "C:\Chemin\Vers\RapportExporté.pdf"
reportDocument.ExportToDisk(ExportFormatType.PortableDocFormat, exportPath)
MessageBox.Show("Rapport exporté avec succès !")
Si votre rapport accepte des paramètres, vous pouvez les passer ainsi :
Dim paramField As New ParameterField()
Dim paramValue As New ParameterDiscreteValue()
paramField.Name = "NomParametre"
paramValue.Value = "ValeurDuParametre"
paramField.CurrentValues.Add(paramValue)
Dim paramFields As New ParameterFields()
paramFields.Add(paramField)
CrystalReportViewer1.ParameterFieldInfo = paramFields
Pour s’assurer que le rapport utilise des données mises à jour, appelez :
CrystalReportViewer1.RefreshReport()
Lors de la publication de votre application, assurez-vous que :
.rpt nécessaires sont inclus avec l’application.Voici quelques cas particuliers auxquels vous pourriez être confronté lorsque vous travaillez avec Crystal Reports dans VB.NET, ainsi que leurs solutions.
Vous ne voulez pas coder en dur le chemin du fichier .rpt dans votre application, car l’emplacement du fichier peut varier (par exemple, lors du déploiement).
Utilisez un chemin dynamique basé sur l’emplacement de l’application :
Dim reportPath As String = System.IO.Path.Combine(Application.StartupPath, "Rapports\VotreRapport.rpt")
Dim reportDocument As New ReportDocument()
reportDocument.Load(reportPath)
CrystalReportViewer1.ReportSource = reportDocument
Vous devez permettre à l’utilisateur de fournir les informations de connexion à la base de données (nom du serveur, base de données, etc.) à l’exécution.
Créez une interface utilisateur pour saisir les informations de connexion, puis appliquez-les au rapport.
Dim connectionInfo As New ConnectionInfo()
connectionInfo.ServerName = txtServerName.Text
connectionInfo.DatabaseName = txtDatabaseName.Text
connectionInfo.UserID = txtUserID.Text
connectionInfo.Password = txtPassword.Text
For Each table As Table In reportDocument.Database.Tables
Dim logonInfo As TableLogOnInfo = table.LogOnInfo
logonInfo.ConnectionInfo = connectionInfo
table.ApplyLogOnInfo(logonInfo)
Next
Votre rapport utilise des paramètres pour filtrer les données (par exemple, une plage de dates ou un identifiant spécifique), et vous devez les passer dynamiquement à l’exécution.
Utilisez ParameterFields pour définir et passer les paramètres :
Dim paramFields As New ParameterFields()
Dim paramField As New ParameterField()
Dim paramValue As New ParameterDiscreteValue()
paramField.Name = "NomDuParametre"
paramValue.Value = "ValeurDuParametre"
paramField.CurrentValues.Add(paramValue)
paramFields.Add(paramField)
CrystalReportViewer1.ParameterFieldInfo = paramFields
Votre rapport principal contient un ou plusieurs sous-rapports, et vous devez configurer les connexions ou passer des paramètres à ces sous-rapports.
Utilisez Subreports pour accéder et configurer les sous-rapports.
For Each subReport As ReportDocument In reportDocument.Subreports
For Each table As Table In subReport.Database.Tables
Dim logonInfo As TableLogOnInfo = table.LogOnInfo
logonInfo.ConnectionInfo = connectionInfo
table.ApplyLogOnInfo(logonInfo)
Next
Next
Vous voulez charger un dataset ou une table de données en tant que source de données pour votre rapport à l’exécution.
Utilisez SetDataSource pour assigner un dataset ou une table au rapport.
Dim ds As New DataSet()
' Remplir le dataset avec des données
' Exemple : Remplir une DataTable et l'ajouter au DataSet
Dim dataTable As New DataTable("NomDeLaTable")
' Ajouter des colonnes et des données à dataTable
ds.Tables.Add(dataTable)
Dim reportDocument As New ReportDocument()
reportDocument.Load("VotreRapport.rpt")
reportDocument.SetDataSource(ds)
CrystalReportViewer1.ReportSource = reportDocument
Vous voulez exporter le rapport directement au format PDF, Excel ou Word.
Utilisez ExportToDisk pour exporter dans le format souhaité.
reportDocument.ExportToDisk(ExportFormatType.PortableDocFormat, "Rapport.pdf")
reportDocument.ExportToDisk(ExportFormatType.Excel, "Rapport.xls")
reportDocument.ExportToDisk(ExportFormatType.WordForWindows, "Rapport.doc")
Le rapport contient beaucoup de données, ce qui entraîne une lenteur lors du chargement.
Optimisez le rapport en appliquant des filtres pour réduire la quantité de données chargées :
Dim paramField As New ParameterField()
Dim paramValue As New ParameterDiscreteValue()
' Ajouter un filtre pour limiter les données (par exemple, une plage de dates)
paramField.Name = "DateDebut"
paramValue.Value = "2024-01-01"
paramField.CurrentValues.Add(paramValue)
' Ajouter un deuxième filtre pour DateFin
Dim paramField2 As New ParameterField()
Dim paramValue2 As New ParameterDiscreteValue()
paramField2.Name = "DateFin"
paramValue2.Value = "2024-12-31"
paramField2.CurrentValues.Add(paramValue2)
Dim paramFields As New ParameterFields()
paramFields.Add(paramField)
paramFields.Add(paramField2)
CrystalReportViewer1.ParameterFieldInfo = paramFields
Une erreur se produit car le rapport n’est pas correctement connecté à la source de données.
Assurez-vous d’appliquer les informations de connexion à toutes les tables du rapport.
Dim connectionInfo As New ConnectionInfo()
connectionInfo.ServerName = "NomServeur"
connectionInfo.DatabaseName = "NomBaseDeDonnees"
connectionInfo.UserID = "Utilisateur"
connectionInfo.Password = "MotDePasse"
For Each table As Table In reportDocument.Database.Tables
Dim logonInfo As TableLogOnInfo = table.LogOnInfo
logonInfo.ConnectionInfo = connectionInfo
table.ApplyLogOnInfo(logonInfo)
Next
Vous souhaitez afficher des rapports Crystal Reports dans une application ASP.NET.
Ajoutez un contrôle CrystalReportViewer à votre page Web et configurez-le pour afficher le rapport.
Imports CrystalDecisions.CrystalReports.Engine
Public Class WebForm1
Inherits System.Web.UI.Page
Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
If Not IsPostBack Then
Dim reportDocument As New ReportDocument()
Dim reportPath As String = Server.MapPath("Rapports/VotreRapport.rpt")
reportDocument.Load(reportPath)
CrystalReportViewer1.ReportSource = reportDocument
CrystalReportViewer1.RefreshReport()
End If
End Sub
End Class
Ces cas particuliers couvrent des scénarios courants que vous pourriez rencontrer lorsque vous travaillez avec Crystal Reports en VB.NET. Ils montrent comment personnaliser et optimiser vos rapports pour répondre aux besoins spécifiques de votre application.
Deux outils concrets pour piloter la qualité sans alourdir vos équipes Cette page met à…
Un chantier se gagne souvent avant même l’arrivée des équipes. Quand tout est clair dès…
Le mariage a du sens quand il repose sur une décision libre, mûrie et partagée.…
Une étude de cas réussie commence par une structure sûre. Ce modèle Word vous guide…
Les soft skills se repèrent vite sur une fiche, mais elles ne pèsent vraiment que…
Outil de comparaison et repérage des offres étudiantes Choisir des verres progressifs ressemble rarement à…
This website uses cookies.