2011-10-25 135 views
0

我開發了一個vb.net應用程序。我的應用程序提供了一些報告功能,如銷售報告等......我通過使用數據集選項生成報告,即將數據集設置爲水晶報告的來源。我只想讓我的應用程序在用戶單擊Windows窗體上的「生成報告」按鈕時打印報告...任何人都可以幫我解決這個問題嗎?如何打印使用水晶報表

回答

0

我使用沿着線的東西關:在類

進口:

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

然後:

Private sub print_report() 

對於參數等

Dim pFields As New ParameterFields() 
    Dim pField As New ParameterField() 
    Dim disVal As New ParameterDiscreteValue() 

    Try 
     Cursor.Current = System.Windows.Forms.Cursors.WaitCursor 

     Dim report_to_print As New report_name 

添加參數(如果不是,則忽略neeeded)

 report_to_print.SetParameterValue("@parameter", parameter) 

您還需要保存的水晶報表查看器控件(這裏frmReportViewer形式)和報表傳遞給它(代碼此之後)

 Dim frmReportViewer As New frmReportViewer(report_to_print) 

傳遞參數(如果需要)

 frmReportViewer.cryrepviewer.ParameterFieldInfo = pFields 

顯示報告

 frmReportViewer.ShowDialog() 


Catch ex As System.Exception 

    'your own error handling code here 

Finally 
     Cursor.Current = System.Windows.Forms.Cursors.Default 
End Try 
End Sub 

frmReportViewer - 包含顯示,保存,打印控件:

Imports CrystalDecisions.CrystalReports.Engine 
Imports CrystalDecisions.Shared 

Public Class frmReportViewer Inherits System.Windows.Forms.Form 

    Dim mViewerRep As New ReportDocument 

    Public Sub New(ByVal pViewerRep As ReportDocument) 

    MyBase.New() 

    'This call is required by the Windows Form Designer. 
    InitializeComponent() 

    'Add any initialization after the InitializeComponent() call 

    mViewerRep = pViewerRep 

    End Sub 

    Private Sub cryRepViewer_Load() Handles cryrepviewer.Load 


     cryrepviewer.ReportSource = mViewerRep 
     cryrepviewer.Refresh() 
     Me.Text = "" 

    End Sub 
End Class