Utilitaire crystal reports

Description

CRUtil est une classe qui vous permet d'initialiser et d'afficher rapidement un état Crytal Reports dans votre application .NET. Elle offre également une fonctionnalité pour l'initialisation du texte des champs de formules de l'état.

Source / Exemple :


'Remarque: les references suivantes sont necessaires pour compiler cette source :
'1. CrystalDecisions.Shared
'2. CrystalDecisions.ReportSource
'3. CrystalDecisions.Windows.Forms
'4. CrystalDecisions.CrystalReports.Engine

Imports System.Windows.Forms
Imports System.Drawing.Printing

Imports CrystalDecisions.Shared
Imports CrystalDecisions.Windows.Forms
Imports CrystalDecisions.CrystalReports.Engine

' Permet de charger et d'afficher rapidement un état Crystal Reports
' Fourni un moyen d'initialisation facile des champs de formule de l'état
Public Class CRHelper
    Private m_FileName As String        ' Chemin d'accès au fichier RPT à charger
    Private m_DataSource As DataSet     ' Source de données de l'état
    Private m_Report As ReportDocument  ' Représente l'état Crystal Reports lui-même

    ' Constructeur par défaut
    Public Sub New()
        m_Report = New ReportDocument
    End Sub

    ' Constructeur qui charge l'état et ses données
    Public Sub New(ByVal fileName As String, ByVal dataSource As DataSet)
        m_Report = New ReportDocument
        Me.FileName = fileName
        Me.DataSource = dataSource
    End Sub

    ' Accesseur  pour le chemin d'accès au fichier RPT
    Public Property FileName() As String
        Get
            Return m_FileName
        End Get
        Set(ByVal Value As String)
            m_FileName = Value
            m_Report.Load(Value)
        End Set
    End Property

    ' Accesseur  pour la source de données de l'état
    Public Property DataSource() As DataSet
        Get
            Return m_DataSource
        End Get
        Set(ByVal Value As DataSet)
            m_DataSource = Value
            m_Report.SetDataSource(Value)
        End Set
    End Property

    ' Accesseur  pour l'objet état Crystal Reports
    Public ReadOnly Property Report() As ReportDocument
        Get
            Return m_Report
        End Get
    End Property

    ' Accesseur pour le texte des champs de formule de l'état
    Public Property FormulaText(ByVal Index As Integer) As Object
        Get
            Return m_Report.DataDefinition.FormulaFields(Index).Text
        End Get
        Set(ByVal Value As Object)
            m_Report.DataDefinition.FormulaFields(Index).Text = Value
        End Set
    End Property

    ' Accesseur pour le texte des champs de formule de l'état
    Public Property FormulaText(ByVal Name As String) As Object
        Get
            Return m_Report.DataDefinition.FormulaFields(Name).Text
        End Get
        Set(ByVal Value As Object)
            m_Report.DataDefinition.FormulaFields(Name).Text = Value
        End Set
    End Property

    ' Affiche un aperçu avant impression de l'état
    Public Sub PrintPreview(ByVal owner As Form)
        Dim CRViewer As New CrystalReportViewer
        With CRViewer
            .DisplayGroupTree = False
            .Dock = DockStyle.Fill
            .ReportSource = m_Report
            .Zoom(2)
        End With

        Dim fViewer As New Form
        With fViewer
            Select Case m_Report.PrintOptions.PaperOrientation
                Case PaperOrientation.Landscape
                    .Size = New Size(600, 450)
                Case Else
                    .Size = New Size(400, 600)
            End Select

            .Text = "Aperçu avant impression"
            .StartPosition = FormStartPosition.CenterParent
            .Controls.Add(CRViewer)

            .ShowDialog(owner)
            .Dispose()
        End With
    End Sub

    ' Provoque l'impression directe de l'état
    Public Sub Print(ByVal printSettings As PrinterSettings)
        Dim copies As Integer = 1
        Dim collated As Boolean
        Dim startPage, lastPage As Integer

        If Not Nothing Is printSettings Then
            copies = printSettings.Copies
            collated = printSettings.Collate
            startPage = printSettings.FromPage
            lastPage = printSettings.ToPage
            m_Report.PrintOptions.PrinterName = printSettings.PrinterName
        End If

        m_Report.PrintToPrinter(copies, collated, startPage, lastPage)
    End Sub
End Class

' Démonstration
Module Demo
    Const CONSTR As String = "Server=(local);Integrated Security=SSPI;Persist Security Info=false;Database=Northwind"

    Sub Main()
        Dim CRH As New CRHelper

        Dim dsEmp As New DataSet("Employees")
        Dim conNWind As New SqlClient.SqlConnection(CONSTR)
        Dim daEmp As New SqlClient.SqlDataAdapter("SELECT * FROM Employees", conNWind)

        Try
            daEmp.Fill(dsEmp, "Employees")
            With CRH
                .FileName = "..\Employees.rpt"
                .DataSource = dsEmp

                .FormulaText("EnteteGauche1") = "'Ma Société'"
                .FormulaText("EnteteGauche2") = "'Ma Direction'"
                .FormulaText("EnteteGauche3") = "'Mon Service'"
                .FormulaText("EnteteGauche4") = "'N''Importe Quoi D''Autre'"
                .FormulaText("Titre") = "'Liste des employés de Northwind'"

                .PrintPreview(Nothing)
            End With
        Catch ex As Exception
            MessageBox.Show(ex.Message, ex.Source, MessageBoxButtons.OK, MessageBoxIcon.Error)
        End Try
    End Sub
End Module

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.