水晶报表中,如何用程序设置数据源位置??以便随着软件安装位置的改变而自动改变数据库的位置!!

解决方案 »

  1.   

    可以SetDataSource动态设置数据源
    Report.DataBase.SetDataSource  rs参考这部分代码:
    一部分代码:
    Option Explicit
    '声明报表对象,与下文相关
    Dim my_Report As New CRReport
    '声明ADO连接
    Dim my_Connection As ADODB.Connection
    '声明记录集
    Dim myadoRS As ADODB.RecordsetPrivate Sub Command1_Click()
        
        Dim SQL As String
        Dim strConnect As String
       
        ' 创建并绑定 ADO Recordset 对象
        Set my_Connection = New ADODB.Connection
        Set myadoRS = New ADODB.Recordset
        
        '  使用 odbc connection
    '    系统中要先建立NEW_North的ODBC,用系统DSN
        strConnect = "Provider=MSDASQL;uid=;pwd=;Data Source=New_North;Mode=Read"
        my_Connection.Open strConnect
        SQL = "Select * from 产品 where 单价 > " & Text1.Text
       
        myadoRS.Open SQL, my_Connection, adOpenStatic, adLockOptimistic
        my_Report.Database.SetDataSource myadoRS  
    '    设置鼠标指针
        Screen.MousePointer = vbHourglass
        
    '将控件与连接关联
        CRViewer_RE.ReportSource = my_Report
    '  显示报表
        CRViewer_RE.ViewReport
        
    '    恢复鼠标指针
        Screen.MousePointer = vbDefault
    End Sub
      

  2.   

    With Crystalreport1
         .windowshowprintsetupBtn=true           '//提供一个打印安装
         .connect=”DSN=列名;UID=登录sql用户名;pwd=密码;DSQ=数据库名”
         .sqlquery=sql语句
         .reportfilename=”……\报表名.rpt”
         .windowstate=CrptMaxmized
         .pagezoom 100
         .printreport                  '//必须要,否不会打印
         .reset
    end with
      

  3.   

    DBEngine.RegisterDatabase “列名”,”sql server”,true,”server=” & serverName & vbcrf & “Database=” & sysdatabase
      

  4.   

    '多表就这样
        Set adoRS1 = New ADODB.Recordset
        Set adoRS2 = New ADODB.Recordset    strConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=d:\hdc\hdc.mdb;Mode=Read"
        m_Connection.Open strConnect    SQL = "SELECT * FROM TempList"
        adoRS1.Open SQL, m_Connection, adOpenDynamic, adLockBatchOptimistic
        SQL = "SELECT * FROM GuestInfo"
        adoRS2.Open SQL, m_Connection, adOpenDynamic, adLockBatchOptimistic
        m_Report.Database.SetDataSource adoRS1, 3, 1
        m_Report.Database.SetDataSource adoRS2, 3, 2'分给少了啊