【发布时间】:2022-01-29 18:00:30
【问题描述】:
我开发了一个 vb.net 应用程序。我的应用程序提供了一些报告工具,例如销售报告等...我使用数据集选项生成了报告,即将数据集设置为水晶报告的来源。我只希望我的应用程序在用户单击 Windows 窗体上的“生成报告”按钮时打印报告...谁能帮我解决这个问题??
【问题讨论】:
我开发了一个 vb.net 应用程序。我的应用程序提供了一些报告工具,例如销售报告等...我使用数据集选项生成了报告,即将数据集设置为水晶报告的来源。我只希望我的应用程序在用户单击 Windows 窗体上的“生成报告”按钮时打印报告...谁能帮我解决这个问题??
【问题讨论】:
我使用了一些类似的东西:
类中的导入:
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
添加参数(如果不需要则忽略)
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
【讨论】: