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
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.