我在水晶报表的报表设计中选择了单独保存,没与数据库一起保存,但我在运行时调用报表,它自动连接到我设计时所使用的数据源。我一改动数据源,报表又全没了。(数据表结构是一样的)我要怎么才能动态改变报表的数据源而又不影响所设计的报表呢?
急,在线等。

解决方案 »

  1.   

    Report.Database.SetDataSource rs
       
       CRViewer91.ReportSource = Report
       CRViewer91.ViewReport
      

  2.   

    把你的数据源用ttx文本保存就可以了
      

  3.   

    a98191兄,我用Report.Database.SetDataSource ("k:\a\gzb.mdb")指定了新的数据源,可显示的还是设计报表时用的数据呀
      

  4.   

    Report.Database.SetDataSource ("k:\a\gzb.mdb")可以这样使用吗?
    好像不可以吧,
      

  5.   

    '运行时动态链接数据库     Private Sub ReportConnection(ByVal report As Object)        ' 声明所需变量。
            'TableLogOnInfo提供属性,以便检索和设置表连接选项。
            Dim logOnInfo As New CrystalDecisions.Shared.TableLogOnInfo
            Dim i As Integer
            ' 对报表中的每个表依次循环。
            For i = 0 To report.Database.Tables.Count - 1
                ' 设置当前表的连接信息。
                logOnInfo.ConnectionInfo.ServerName = "server"
                logOnInfo.ConnectionInfo.DatabaseName = "database"
                logOnInfo.ConnectionInfo.UserID = "sa"
                logOnInfo.ConnectionInfo.Password = "sa"
                report.Database.Tables.Item(i).ApplyLogOnInfo(logOnInfo)
            Next i    End Sub
      

  6.   

    谢谢,我想我可能没说清楚,
    我想在程序中动态的改变数据源,
    比如说我的报表是按照200506.mdb数据库做的
    我7月份的数据保存为200507.mdb,数据库中的表以及及中的字段结构都一样,只有数据不一样,我现在要将报表的数据源指向200507.mdb,而报表不用变,这我要在程序中怎么改呀,
      

  7.   

    哈哈,你没有清缓存
     Report.DiscardSavedData
    Report.Database.SetDataSource rs
       
       CRViewer91.ReportSource = Report
       CRViewer91.ViewReport
      

  8.   

    a97191() 兄,我按你说的作了,可还是没用啊,显示的还是原来的数据呀?Dim Report As New CrystalReport1Private Sub Form_Load()
    Report.DiscardSavedData
    Report.Database.SetDataSource (App.Path & "\200505.mdb")
    Screen.MousePointer = vbHourglass
    CRViewer91.ReportSource = Report
    CRViewer91.ViewReport
    Screen.MousePointer = vbDefault
    End SubPrivate Sub Form_Resize()
    CRViewer91.Top = 0
    CRViewer91.Left = 0
    CRViewer91.Height = ScaleHeight
    CRViewer91.Width = ScaleWidth
    End Sub
      

  9.   

    那就动态改变 连接对象OleDbConnection 的数据库连接字符串阿' Visual Basic
    Public Sub ConnectToAccess()
        Dim conn As New System.Data.OleDb.OleDbConnection()
        ' TODO: Modify the connection string and include any
        ' additional required properties for your database.
        conn.ConnectionString = & _
        "Provider=Microsoft.Jet.OLEDB.4.0;Data source=" & _
        "C:\Documents and Settings\username\My Documents\dbFile.mdb"  '动态修改这个
        Try
           conn.Open()
           ' Insert code to process data.
        Catch ex As Exception
           MessageBox.Show("Failed to connect to data source")
        Finally
           conn.Close()
        End Try
    End Sub
      

  10.   

    要用表才是
     dim conn as new ADODB.Connection
     dim rs as new ADODB.Recordset
     conn.ConnectionString = & _
        "Provider=Microsoft.Jet.OLEDB.4.0;Data source=" & _
        app.path &"200505.mdb" 
     rs.open 表或者查询语句,conn, adOpenStatic, adLockReadOnly
    Report.DiscardSavedData
    Report.Database.SetDataSource rs
      

  11.   

    Me.CryReport.Connect = "DSN=ERP2002;UID=" & SysUserName & ";PWD=" & SysPassword & ";DSQ=" & DatabaseName