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.網上有轉化的函數,你可以去找一找
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.網上有轉化的函數,你可以去找一找
必须要DS么?
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
//得到数据ds
...
//ReportDocument组件与水晶报表关联
crp.SetDataSource(ds);
crystalReportViewer1.ReportSource=crp;
//ds中包含水晶报表的字段集合就不会出现输入密码的现象