我是用VB+水晶报表开发程序的,因为设计报表时用的数据库的地址和用户使用时的数据库地址是不样的,我现在想知道能不能打开报表时指定数据源,该怎么做?能给出详细的步骤更好,比如我设计时要注意什么,设置数据源时怎么做,有代码就更好了,谢谢!

解决方案 »

  1.   

    数据源和连接服务器当然可以临时指定,连接服务器的字符串我就不写出了,只给出指定水晶报表的数据源的示例代码吧,供参考:
        Dim CRpt As New CrystalReport
        'CRV是显示控件
        CRpt.Database.SetDataSource Rst
        CRpt.PaperSize = crPaperA4
        CRpt.PaperOrientation = crPortrait
        CRV.ReportSource = CRpt
        CRV.ViewReport
      

  2.   

    如果你要程序中打开已经做好的水晶报表模板,那代码为:
    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 StringstrSql = "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 = FalseCRV.ReportSource = crRpt
    CRV.DisplayBackgroundEdge = False
    CRV.DisplayGroupTree = False
    CRV.Refresh
    CRV.ViewReport
      

  3.   

    Private Sub DataEnvironment_Initialize()
    DataEnvironment1.Connection1.ConnectionString = "driver=sql server;server=服务器名;uid=sa;pwd=密码;database=数据库"
    End Sub