VB调用并显示、汇出水晶报表代码示例: Dim Con As New ADODB.Connection Dim Rst As New ADODB.Recordset Dim CRpt As New Rpt1 'Rpt1是dsr格式的水晶报表文件 Dim strSql As StringPrivate Sub cmdExport_Click() '汇出当前显示的水晶报表到Excel文件,文件名为"testxls.xls" CRpt.ExportOptions.FormatType = crEFTExcel80 CRpt.ExportOptions.DestinationType = crEDTDiskFile CRpt.ExportOptions.DiskFileName = App.Path & "\testxls.xls" CRpt.ExportOptions.ExcelExportAllPages = True CRpt.ExportOptions.ExcelPageBreaks = True CRpt.Export False MsgBox "Export to file successfully." End SubPrivate Sub Form_Load() '动态赋给水晶报表记录源,并显示报表内容 'CRV为水晶报表显示控件 strSql = "Provider=sqloledb.1;data source=bgserver;user id=sa;initial catalog=northwind" Con.Open strSql strSql = "select top 100 * from [orders qry] order by orderid" Rst.Open strSql, Con, adOpenStatic, adLockReadOnly, adCmdText CRpt.Database.SetDataSource Rst CRpt.PaperSize = crPaperA4 CRpt.PaperOrientation = crPortrait CRV.ReportSource = CRpt CRV.ViewReport End Sub
'上例是调用集成VB开发环境里的水晶报表,此例直接调用水晶报表的rpt文件 Dim crApp As New CRAXDRT.Application Dim crRpt As New CRAXDRT.Report Dim Con As New ADODB.Connection Dim Rst As New ADODB.Recordset Dim strSql As StringPrivate Sub Form_Load() strSql = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Program Files\Crystal Decisions\Crystal Reports 9\Samples\chs\Databases\xtreme.mdb;Persist Security Info=False" Con.Open strSql strSql = "SELECT top 5 客户.*, 订单.* FROM 客户 INNER JOIN 订单 ON 客户.[客户 ID] = 订单.[客户 ID] order by 客户.[客户 ID], 订单.[订单 ID]" Rst.Open strSql, Con, adOpenStatic, adLockReadOnly, adCmdText Set crRpt = crApp.OpenReport(App.Path & "\order.rpt") crRpt.DiscardSavedData crRpt.Database.SetDataSource Rst, 3, 1 crRpt.Database.SetDataSource Rst, 3, 2 crRpt.EnableParameterPrompting = False
CRV.ReportSource = crRpt CRV.DisplayBackgroundEdge = False CRV.DisplayGroupTree = False CRV.Refresh CRV.ViewReport End Sub
Dim Con As New ADODB.Connection
Dim Rst As New ADODB.Recordset
Dim CRpt As New Rpt1 'Rpt1是dsr格式的水晶报表文件
Dim strSql As StringPrivate Sub cmdExport_Click()
'汇出当前显示的水晶报表到Excel文件,文件名为"testxls.xls"
CRpt.ExportOptions.FormatType = crEFTExcel80
CRpt.ExportOptions.DestinationType = crEDTDiskFile
CRpt.ExportOptions.DiskFileName = App.Path & "\testxls.xls"
CRpt.ExportOptions.ExcelExportAllPages = True
CRpt.ExportOptions.ExcelPageBreaks = True
CRpt.Export False
MsgBox "Export to file successfully."
End SubPrivate Sub Form_Load()
'动态赋给水晶报表记录源,并显示报表内容
'CRV为水晶报表显示控件
strSql = "Provider=sqloledb.1;data source=bgserver;user id=sa;initial catalog=northwind"
Con.Open strSql
strSql = "select top 100 * from [orders qry] order by orderid"
Rst.Open strSql, Con, adOpenStatic, adLockReadOnly, adCmdText
CRpt.Database.SetDataSource Rst
CRpt.PaperSize = crPaperA4
CRpt.PaperOrientation = crPortrait
CRV.ReportSource = CRpt
CRV.ViewReport
End Sub
Dim crApp As New CRAXDRT.Application
Dim crRpt As New CRAXDRT.Report
Dim Con As New ADODB.Connection
Dim Rst As New ADODB.Recordset
Dim strSql As StringPrivate Sub Form_Load()
strSql = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Program Files\Crystal Decisions\Crystal Reports 9\Samples\chs\Databases\xtreme.mdb;Persist Security Info=False"
Con.Open strSql
strSql = "SELECT top 5 客户.*, 订单.* FROM 客户 INNER JOIN 订单 ON 客户.[客户 ID] = 订单.[客户 ID] order by 客户.[客户 ID], 订单.[订单 ID]"
Rst.Open strSql, Con, adOpenStatic, adLockReadOnly, adCmdText
Set crRpt = crApp.OpenReport(App.Path & "\order.rpt")
crRpt.DiscardSavedData
crRpt.Database.SetDataSource Rst, 3, 1
crRpt.Database.SetDataSource Rst, 3, 2
crRpt.EnableParameterPrompting = False
CRV.ReportSource = crRpt
CRV.DisplayBackgroundEdge = False
CRV.DisplayGroupTree = False
CRV.Refresh
CRV.ViewReport
End Sub