Utilitaire crystal reports

Soyez le premier à donner votre avis sur cette source.

Vue 36 779 fois - Téléchargée 7 321 fois

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

Ajouter un commentaire

Commentaires

anvert
Messages postés
12
Date d'inscription
mardi 11 mars 2003
Statut
Membre
Dernière intervention
17 septembre 2007
-
Bonjour,
La base Northwind que tu utilises est une base de données Access au format mdb. Il en existe une autre sous forme d'un projet Access de format ADP.
Dans ton code tu te sers de SQL Server pour ouvrir une connexion à la base. Elle échoue car le server SQL ne sait pas l'atteindre sous ces 2 formats.
Comment fais-tu?
cs_addy
Messages postés
39
Date d'inscription
lundi 3 janvier 2005
Statut
Membre
Dernière intervention
20 mars 2009
-
Northwind est un exemple de base de données fourni avec tous les SGBD de Microsoft. La version que j'ai utilisé est fournie avec SQL Server. Le programme s'execute donc sans problème sur mon poste. Cependant, tu peux utiliser la version fournie avec MS Office sous-forme de fichier ADP. Il suffit d'installer au préalable MSDE (un SQL Server allégé) lui aussi fourni avec MS Office
souad2511
Messages postés
1
Date d'inscription
lundi 15 mai 2006
Statut
Membre
Dernière intervention
15 mai 2006
-
bonjour svp , vous pouvez me donnez un autre code pour le crystalreport
et pour un combobox je veu chosir un etat ds le combobox et le crystale se charge aprés mon choix avec tout les informations de l'etat que j'ai choisi et aprés je click sur un bouton pour imprimé la fiche .merci
cs_addy
Messages postés
39
Date d'inscription
lundi 3 janvier 2005
Statut
Membre
Dernière intervention
20 mars 2009
-
Tu peux utiliser le code ci-dessus pour résoudre ton problème. Saches que tu auras besoin d'un fichier .rpt et d'un DataSet différents pour chaque élément de ta liste.

ton code pourrait ressembler a ceci :

Dim helper As New CRHelper()

Select Case ComboBox1.SelectedItem
Case valeur1
helper.FileName = "valeur1.rpt"
helper.DataSource = dsValeur1
.
.
.
End Select

helper.Print(Nothimg)
raoudha_hedile
Messages postés
3
Date d'inscription
mardi 28 novembre 2006
Statut
Membre
Dernière intervention
29 novembre 2006
-
bonjour
est ce que je peut mettre un code qui me permet de selectionner un bon de commande donnée et le crystal report peut charger ce bon en tenant compte que tous les bon son classées dans un seul table triés par date

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.