VB.NET

Comment lire un fichier Crystal Reports ?

Pour lire un fichier Crystal Reports dans une application VB.NET, vous devez charger le fichier .rpt et afficher son contenu dans un contrôle comme le CrystalReportViewer. Voici un guide détaillé pour lire un fichier Crystal Reports.


Prérequis

  1. Visual Studio : Installez une version compatible avec Crystal Reports.
  2. Runtime Crystal Reports : Téléchargez et installez le runtime pour Crystal Reports.
  3. DLL Crystal Reports : Assurez-vous que les bibliothèques suivantes sont référencées dans votre projet :
    • CrystalDecisions.CrystalReports.Engine
    • CrystalDecisions.ReportSource
    • CrystalDecisions.Shared
    • CrystalDecisions.Windows.Forms

Étape 1 : Ajouter un CrystalReportViewer

Pour lire et afficher un rapport dans une application Windows Forms, ajoutez un contrôle CrystalReportViewer à votre formulaire :

  1. Ouvrez votre formulaire dans Visual Studio.
  2. Accédez à la Boîte à outils et recherchez CrystalReportViewer.
  3. Faites glisser et déposez le contrôle dans votre formulaire.

Étape 2 : Charger et lire un fichier Crystal Reports

Ajoutez le code pour charger et afficher un rapport .rpt dans le CrystalReportViewer.

Exemple de Code Complet :

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()

            ' Charger le fichier Crystal Reports
            Dim reportPath As String = "C:\Chemin\Vers\VotreRapport.rpt"
            reportDocument.Load(reportPath)

            ' Si le rapport nécessite une connexion à une base de données
            Dim connectionInfo As New ConnectionInfo()
            connectionInfo.ServerName = "NomServeur"
            connectionInfo.DatabaseName = "NomBaseDeDonnees"
            connectionInfo.UserID = "Utilisateur"
            connectionInfo.Password = "MotDePasse"

            ' 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 qu'il est mis à 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

Étape 3 : Explications

  1. Chargement du fichier :
    • La méthode Load de ReportDocument est utilisée pour charger le fichier .rpt.
  2. Connexion à la base de données :
    • Si le rapport dépend d’une base de données, configurez les informations de connexion avec ConnectionInfo.
  3. Application des connexions :
    • Les informations de connexion doivent être appliquées à toutes les tables du rapport avec la méthode ApplyLogOnInfo.
  4. Affichage dans le CrystalReportViewer :
    • Assignez l’objet ReportDocument à la propriété ReportSource du CrystalReportViewer.

Étape 4 : Ajout de paramètres (si nécessaire)

Si votre rapport utilise des paramètres, vous devez les définir avant d’afficher le rapport.

Exemple :

Dim paramFields As New ParameterFields()
Dim paramField As New ParameterField()
Dim paramValue As New ParameterDiscreteValue()

' Ajouter un paramètre au rapport
paramField.Name = "NomDuParametre"
paramValue.Value = "ValeurDuParametre"
paramField.CurrentValues.Add(paramValue)
paramFields.Add(paramField)

CrystalReportViewer1.ParameterFieldInfo = paramFields

Étape 5 : Exporter le rapport (optionnel)

Vous pouvez également lire le rapport et l’exporter au format PDF, Excel ou Word.

Exemple d’exportation en PDF :

Dim exportPath As String = "C:\Chemin\Vers\RapportExporté.pdf"
reportDocument.ExportToDisk(ExportFormatType.PortableDocFormat, exportPath)
MessageBox.Show("Rapport exporté avec succès !")

Étape 6 : Résolution des erreurs courantes

Erreur : “Impossible de trouver les informations de connexion”

  • Vérifiez que les informations de connexion sont correctement configurées pour toutes les tables du rapport.

“Chemin introuvable”

  • Assurez-vous que le chemin du fichier .rpt est correct. Utilisez Application.StartupPath pour un chemin relatif.

Erreur : “Impossible de charger le fichier .rpt”

  • Vérifiez que le runtime de Crystal Reports est installé sur votre système.

Étape 7 : Exemple avec un chemin dynamique

Pour rendre votre application plus flexible, utilisez un chemin dynamique pour le fichier .rpt.

Exemple :

Dim reportPath As String = System.IO.Path.Combine(Application.StartupPath, "Rapports\VotreRapport.rpt")
reportDocument.Load(reportPath)

Étape 8 : Lire un fichier Crystal Reports dans une application Web (ASP.NET)

Si vous développez une application Web, utilisez le CrystalReportViewer dans une page ASP.NET.

Exemple (WebForm) :

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

Pour exporter un rapport Crystal Reports en PDF dans une application VB.NET, vous pouvez utiliser la méthode ExportToDisk ou ExportToStream de l’objet ReportDocument. Voici un guide détaillé.


Étape 1 : Préparer l’environnement

  1. Prérequis :
    • Assurez-vous que le runtime Crystal Reports est installé.
    • Référencez les bibliothèques nécessaires dans votre projet :
      • CrystalDecisions.CrystalReports.Engine
      • CrystalDecisions.Shared
  2. Créer un rapport Crystal Reports (.rpt) :
    • Configurez votre rapport pour qu’il affiche les données souhaitées.

Étape 2 : Exporter un Rapport en PDF

Voici le code de base pour exporter un rapport Crystal Reports en PDF.

Exemple 1 : Exportation de base

Imports CrystalDecisions.CrystalReports.Engine
Imports CrystalDecisions.Shared

Module ExportCrystalReports
    Sub Main()
        Try
            ' Créer une instance du rapport
            Dim reportDocument As New ReportDocument()

            ' Chemin du fichier Crystal Reports
            Dim reportPath As String = "C:\Chemin\Vers\VotreRapport.rpt"
            reportDocument.Load(reportPath)

            ' Exporter le rapport en PDF
            Dim exportPath As String = "C:\Chemin\Vers\RapportExporté.pdf"
            reportDocument.ExportToDisk(ExportFormatType.PortableDocFormat, exportPath)

            Console.WriteLine("Rapport exporté avec succès : " & exportPath)
        Catch ex As Exception
            Console.WriteLine("Erreur lors de l'exportation : " & ex.Message)
        End Try
    End Sub
End Module

Exemple 2 : Exportation avec Connexion à une Base de Données

Si votre rapport utilise une base de données, configurez les informations de connexion avant l’exportation.

Imports CrystalDecisions.CrystalReports.Engine
Imports CrystalDecisions.Shared

Module ExportCrystalReportsWithDB
    Sub Main()
        Try
            ' Créer une instance du rapport
            Dim reportDocument As New ReportDocument()

            ' Charger le fichier de rapport
            Dim reportPath As String = "C:\Chemin\Vers\VotreRapport.rpt"
            reportDocument.Load(reportPath)

            ' Configurer les informations de connexion
            Dim connectionInfo As New ConnectionInfo()
            connectionInfo.ServerName = "NomServeur"
            connectionInfo.DatabaseName = "NomBaseDeDonnees"
            connectionInfo.UserID = "Utilisateur"
            connectionInfo.Password = "MotDePasse"

            ' Appliquer les informations de connexion à toutes les tables
            For Each table As Table In reportDocument.Database.Tables
                Dim logonInfo As TableLogOnInfo = table.LogOnInfo
                logonInfo.ConnectionInfo = connectionInfo
                table.ApplyLogOnInfo(logonInfo)
            Next

            ' Exporter le rapport en PDF
            Dim exportPath As String = "C:\Chemin\Vers\RapportExporté.pdf"
            reportDocument.ExportToDisk(ExportFormatType.PortableDocFormat, exportPath)

            Console.WriteLine("Rapport exporté avec succès : " & exportPath)
        Catch ex As Exception
            Console.WriteLine("Erreur lors de l'exportation : " & ex.Message)
        End Try
    End Sub
End Module

Étape 3 : Exporter vers un Flux (Stream)

Si vous voulez manipuler le fichier PDF avant de le sauvegarder, utilisez un Stream.

Exemple d’exportation vers un flux

Imports System.IO
Imports CrystalDecisions.CrystalReports.Engine
Imports CrystalDecisions.Shared

Module ExportToStream
    Sub Main()
        Try
            ' Créer une instance du rapport
            Dim reportDocument As New ReportDocument()

            ' Charger le fichier de rapport
            Dim reportPath As String = "C:\Chemin\Vers\VotreRapport.rpt"
            reportDocument.Load(reportPath)

            ' Exporter le rapport en flux PDF
            Dim pdfStream As Stream = reportDocument.ExportToStream(ExportFormatType.PortableDocFormat)

            ' Enregistrer le flux en tant que fichier PDF
            Dim exportPath As String = "C:\Chemin\Vers\RapportStream.pdf"
            Using fileStream As New FileStream(exportPath, FileMode.Create, FileAccess.Write)
                pdfStream.CopyTo(fileStream)
            End Using

            Console.WriteLine("Rapport exporté avec succès depuis le flux : " & exportPath)
        Catch ex As Exception
            Console.WriteLine("Erreur lors de l'exportation : " & ex.Message)
        End Try
    End Sub
End Module

Étape 4 : Ajouter des Paramètres au Rapport

Si votre rapport accepte des paramètres, vous pouvez les définir avant l’exportation.

Exemple avec paramètres

Imports CrystalDecisions.CrystalReports.Engine
Imports CrystalDecisions.Shared

Module ExportWithParameters
    Sub Main()
        Try
            ' Créer une instance du rapport
            Dim reportDocument As New ReportDocument()
            Dim reportPath As String = "C:\Chemin\Vers\VotreRapport.rpt"
            reportDocument.Load(reportPath)

            ' Ajouter un paramètre
            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)

            ' Assigner les paramètres au rapport
            reportDocument.SetParameterValue("NomDuParametre", "ValeurDuParametre")

            ' Exporter le rapport en PDF
            Dim exportPath As String = "C:\Chemin\Vers\RapportParametre.pdf"
            reportDocument.ExportToDisk(ExportFormatType.PortableDocFormat, exportPath)

            Console.WriteLine("Rapport exporté avec succès avec paramètres : " & exportPath)
        Catch ex As Exception
            Console.WriteLine("Erreur lors de l'exportation : " & ex.Message)
        End Try
    End Sub
End Module

Étape 5 : Résolution des erreurs courantes

Erreur : “Impossible de trouver les informations de connexion”

  • Vérifiez que les informations de connexion sont correctement appliquées à toutes les tables du rapport.

“Le fichier est introuvable”

  • Assurez-vous que le chemin du fichier .rpt est correct. Utilisez System.IO.Path.Combine pour des chemins dynamiques.

Erreur : “Le rapport est déjà utilisé”

  • Si vous exportez plusieurs rapports dans une même instance, appelez reportDocument.Close() et reportDocument.Dispose() après chaque exportation.

Étape 6 : Exporter dans d’autres formats

Outre le PDF, vous pouvez exporter dans d’autres formats comme Excel ou Word.

Exemple :

' Exportation au format Excel
reportDocument.ExportToDisk(ExportFormatType.Excel, "C:\Chemin\Vers\RapportExcel.xls")

' Exportation au format Word
reportDocument.ExportToDisk(ExportFormatType.WordForWindows, "C:\Chemin\Vers\RapportWord.doc")

Autres articles

Guide : Déclaration d’un objet en VB.NET...
VB.NET (Visual Basic .NET) est un langage orienté objet qui...
Read more
Guide : Comment ouvrir une base de...
Ce guide explique étape par étape comment ouvrir une base...
Read more
Guide : Afficher une miniature d’un fichier...
En VB.NET, il n’existe pas de méthode native pour afficher...
Read more

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *