1.將數據推入報表, 使用ADO.NET
        Dim conn As SqlConnection
        Dim da As SqlDataAdapter
        Dim strSQL As String        conn = New SqlConnection()
        conn.ConnectionString = "User ID=sa; PWD=1234;Data Source=xxxx; Initial Catalog =xxxxx"
        conn.Open()        strSQL = "Select * from TableName"     '如果數據表與其他數據表有關聯,則此處需使用Select * From TableName
        da = New SqlDataAdapter(strSQL, conn)
        Dim ds As New DataSet()                    
        da.Fill(ds, "TableName")                        '此處一定要加TableName,否則抽取不到數據
Dim RptDoc As New SqlReportName()   'SqlReportName為你製作的以SQL Server為數據源的報表名
RptDoc.SetDataSource(ds)                       ' 給RptDoc 指定數據,   不能寫成ds.Tables(0) 或ds.Tables("tableName")CrystalView1.ReportSource = RptDoc      '給CrystalView指定數據
CrystalView1.DataBind()
conn.Close()
2.使用TableLogonInfoDim ReportDoc As New ReportDocument()
Dim logonInfo As New TableLogonInfo
Dim table As table
ReportDoc.Load("C:\Rpts\publish.rpt")
For Each table IN ReportDoc.DataBase.Tables
        logonInfo= table.LogonInfo
        with logonInfo.connectioninfo
          .serverName= "Localhost"
          .Database= "pubs"
          .UserID= "sa"
          .Password=""
        End With
        table.applyLogonInfo(logonInfo)
next table
Crviewer.reportsource= reportDoc3.網上有轉化的函數,你可以去找一找

解决方案 »

  1.   

    你的数据库连接错误,你应该连那个ds(比如说ds.xsd,它一般和你的工程在一起)
      

  2.   

    我是直接连到数据库的!读取数据库中的一个表数据,没有DS!
    必须要DS么?
      

  3.   

    Imports CrystalDecisions.CrystalReports.Engine
    Imports CrystalDecisions.SharedPrivate Sub btnLogOn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLogOn.Click        Dim ReportDoc As New ReportDocument()
            Dim logonInfo As New TableLogOnInfo()
            Dim table As Table        ReportDoc.Load(Application.StartupPath & "\publishers.rpt")        For Each table In ReportDoc.Database.Tables
                logonInfo = table.LogOnInfo
                With logonInfo.ConnectionInfo
                  .ServerName = "localhost"
                  .DatabaseName = "Pubs"
                  .UserID = "sa"
                  .Password = ""
                End With
                table.ApplyLogOnInfo(logonInfo)
            Next table        CRViewer.ReportSource = ReportDoc    End Sub
      

  4.   

    DataSet ds=new DataSet();
    //得到数据ds
    ...
    //ReportDocument组件与水晶报表关联
    crp.SetDataSource(ds);
    crystalReportViewer1.ReportSource=crp;
    //ds中包含水晶报表的字段集合就不会出现输入密码的现象