让 .rdlc 与数据集和报表查看器一起工作
getting .rdlc to work with dataset and report viewer
在过去的 2 天里,我一直在努力让这份报告发挥作用。我浏览了很多网站等等,但是我仍然无法让这份报告发挥作用。
以下是我采取的步骤:
已创建新应用程序
已添加 ReportViewer1
已添加Report1.rdlc
创建了一个名为 DS1 的新数据集 - 我在其中连接到 Sql 服务器,并获取了所有必要的表。
创建了一个参数textbox/table
对于 ReportViewer1 - 将报告源更改为 WindowsApplication。Report1.Rdlc
还将源代码(对于 reportViewer1)更改为 DS1
在 form1 的 buttonClick 下添加了以下代码
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim params(0) As Microsoft.Reporting.WinForms.ReportParameter
params(0) = New Microsoft.Reporting.WinForms.ReportParameter("ReportParameter1", "HELLOOOOOOOOOOOOO")
ReportViewer1.LocalReport.SetParameters(params)
'Get Data
Dim ReportDS As DataSet = GetData()
Dim rds As ReportDataSource = New ReportDataSource("DS1", ReportDS.Tables(0))
ReportViewer1.LocalReport.DataSources.Clear()
ReportViewer1.LocalReport.DataSources.Add(rds)
ReportViewer1.RefreshReport()
Me.ReportViewer1.RefreshReport()
End Sub
Public Function GetData() As DataSet
Dim ds As New DataSet
Dim adapter As SqlDataAdapter
Conn.Open()
Dim sql As String = "Select FirstN, LastN from tblCustomers"
adapter = New SqlDataAdapter(sql, Conn)
adapter.Fill(ds)
Return ds
End Function
请有人指出我正确的方向 - 我不确定我做错了什么!
如果我只执行 ReportParameter1 - 我可以在报表查看器中看到 "HELLOOO",所以我知道它有效,但是添加数据和诸如此类的东西它不起作用,我得到的错误是...... .
A data source instance has not been supplied for DataSet1
根据您收到的错误消息和查看此行:
Dim rds As ReportDataSource = New ReportDataSource("DS1", ReportDS.Tables(0))
我可以得出结论,报告数据集在 RDLC 中定义为 "DataSet",而您将其提供为 "DS1"。
更改为:
Dim rds As ReportDataSource = New ReportDataSource("DataSet1", ReportDS.Tables(0))
在过去的 2 天里,我一直在努力让这份报告发挥作用。我浏览了很多网站等等,但是我仍然无法让这份报告发挥作用。
以下是我采取的步骤:
已创建新应用程序
已添加 ReportViewer1
已添加Report1.rdlc
创建了一个名为 DS1 的新数据集 - 我在其中连接到 Sql 服务器,并获取了所有必要的表。
创建了一个参数textbox/table
对于 ReportViewer1 - 将报告源更改为 WindowsApplication。Report1.Rdlc
还将源代码(对于 reportViewer1)更改为 DS1
在 form1 的 buttonClick 下添加了以下代码
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim params(0) As Microsoft.Reporting.WinForms.ReportParameter
params(0) = New Microsoft.Reporting.WinForms.ReportParameter("ReportParameter1", "HELLOOOOOOOOOOOOO")
ReportViewer1.LocalReport.SetParameters(params)
'Get Data
Dim ReportDS As DataSet = GetData()
Dim rds As ReportDataSource = New ReportDataSource("DS1", ReportDS.Tables(0))
ReportViewer1.LocalReport.DataSources.Clear()
ReportViewer1.LocalReport.DataSources.Add(rds)
ReportViewer1.RefreshReport()
Me.ReportViewer1.RefreshReport()
End Sub
Public Function GetData() As DataSet
Dim ds As New DataSet
Dim adapter As SqlDataAdapter
Conn.Open()
Dim sql As String = "Select FirstN, LastN from tblCustomers"
adapter = New SqlDataAdapter(sql, Conn)
adapter.Fill(ds)
Return ds
End Function
请有人指出我正确的方向 - 我不确定我做错了什么!
如果我只执行 ReportParameter1 - 我可以在报表查看器中看到 "HELLOOO",所以我知道它有效,但是添加数据和诸如此类的东西它不起作用,我得到的错误是...... .
A data source instance has not been supplied for DataSet1
根据您收到的错误消息和查看此行:
Dim rds As ReportDataSource = New ReportDataSource("DS1", ReportDS.Tables(0))
我可以得出结论,报告数据集在 RDLC 中定义为 "DataSet",而您将其提供为 "DS1"。
更改为:
Dim rds As ReportDataSource = New ReportDataSource("DataSet1", ReportDS.Tables(0))