在Crystal设计的报表,怎么用一个命令按钮按一下就能在VB的程序界面里能预览这个水晶报表??最好能提供代码,以供参考。急!!

解决方案 »

  1.   

    参考:http://dev.csdn.net/develop/article/60/60047.shtm
      

  2.   

    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
      

  3.   

    '上例是调用集成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