Soyez le premier à donner votre avis sur cette source.
Vue 37 629 fois - Téléchargée 7 430 fois
'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 deviez rencontrer un problème à l'initialisation de la classe car il indique qu'il manque le fichier "DefaultAnimation.gif".
Pour contourner le problème, dans les propriétés du projet - Ressources, j'ai ajouté une image vide en format GIF avec comme nom "DefaultAnimation" - puis dans l'Explorateur de solutions, je suis aller retrouver le fichier pour pouvoir changer son propriété "Action de génération" pour sélectionner "Ressource incorporée" au lieu de "Aucun" par défaut.
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.