现在我一直在这里寻找相同问题的答案,但没有一个真正解决问题或包含足够的信息来澄清一些信息。
现在首先我制作了一个连接到访问数据库的.rdl报告。到目前为止都很好。现在我想把它连接到我的软件而没有服务器(本地)查找代码,最接近我得到的东西是这样的:
Private Sub GenerateLocalReport()
ReportViewer1.ProcessingMode = ProcessingMode.Local
ReportViewer1.LocalReport.ReportPath = "D:\work\OrdersInvoice\ReportInvoice\ReportInvoice\OrdersReport.rdl"
reportViewer.RefreshReport()
ReportViewer1.RefreshReport()
End Sub
现在问题是上面的代码不起作用。我收到以下消息:尚未为数据源提供数据源实例。
通过搜索我发现的东西,我需要添加一些东西作为数据绑定。现在这里是混乱开始的地方。
Dim ds = New ReportDataSource("DataSet1",???)
reportViewer1.LocalReport.DataSources.Add(ds)
这是我能得到的最直接的代码。但我不知道绑定数据源意味着什么。我试图在程序中创建一个数据源,但它不是真正的答案。我有点迷失在这里。
我发现的另一个代码应该是:
ReportViewer1.LocalReport.DataSources.Add(TempDBDataSet.OrderTableDataTable
同样的问题
C#或VB.net中的答案都可以。
答案 0 :(得分:1)
有两种类型的Reporting Services文件:RDL& RDLC。
两者的功能非常相似。
RDL文件旨在在报表服务器上运行,其中服务器负责根据报表中提供的连接信息创建和填充数据源。
RDLC文件旨在使用报表查看器控件嵌入到客户端应用程序中,无需服务器。您还必须在客户端应用程序中手动连接和填充数据源(正如您在答案中所做的那样)。
答案 1 :(得分:0)
我相信经过一些试验和错误我解决了这个问题。首先,这里是我使用的代码:
Dim dataset As New DataSet("DataSet1")
Dim Conn As OleDb.OleDbConnection = New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\TempDB.mdb;User Id=admin;
Password=;")
Dim Adb As OleDb.OleDbDataAdapter = New OleDb.OleDbDataAdapter("Select * from OrderTable", Conn)
Adb.Fill(dataset)
Dim rds As New ReportDataSource()
rds.Name = "DataSet1"
rds.Value = dataset.Tables(0)
ReportViewer1.LocalReport.DataSources.Add(rds)
所以我做的是我连接到连接到报表的数据库,然后将数据从数据库填充到我的数据集,用于访问我最终引用ReportDataSource的表。
之后它运作良好。