我在这里有点傻眼。我所见过的大多数教程都使用向导或内置(或现成)数据集创建报告。我在运行时使用查询构建我的数据集,所以我不太确定如何采用迄今为止所见的数据集。程序RDLC报告
通常,当我创建报告时,它是一个记录报告,可以使用参数轻松填充RDLC文件中的字段。然而,我正在尝试做的下面的工作类似于制作SELECT
查询。因此,这里是我想要做的,我试图做一个报告,显示了像这样:
Status: Approved
PID | Name | Address
1 | Name 1 | Address 1
2 | Name 2 | Address 2
===========================
Status: Denied
PID | Name | Address
3 | Name 3 | Address 3
4 | Name 4 | Address 4
我有这样几个问题:
我RDLC报告存储在带有.vb/.resx文件的文件夹内的“\ Reports”文件夹中。当我提到它使用Application.StartupPath &“\ Reports \ myReport.rdlc”时,它在那里找不到(显然)。有没有办法将报告文件嵌入到程序中(即:使用相对文件夹名称,我应该在哪里放置RDLC文件夹/文件)?我不认为我应该将RDLC文件传输到Debug文件夹中,以使其工作(因此完整的目录列表)。
在尝试使用上面的代码创建报告时采取什么样的方法?我在想,如果我要循环使用我的数据集并将其中的值作为参数传递给RDLC文件,它将填充报告(与之前的单记录报告一样),但似乎并非如此。
刷新报表观众也给了我
的数据源实例数据源“数据集1”尚未提供。
我创造了RDLC文件虚拟数据集只是为了能够使用的Tablix在多个线程我读周围建议。我真的更喜欢如果我可以使用我从头开始制作的数据集,而不是使用向导。
Private Sub btnGenerateReport_Click(sender As Object, e As EventArgs) Handles btnGenerateReport.Click Dim query As String query = BuildQuery() SQLControl = New SQLControl Try If Not query = String.Empty Then SQLControl.QueryParams(query) If SQLControl.SQLDS.Tables(0).Rows.Count > 0 Then FetchData() End If End If Catch ex As Exception MsgBox(ex.Message, MsgBoxStyle.Exclamation, "Report Maker") End Try End Sub Private Sub FetchData() Dim dataSource As ReportDataSource Dim PID As Integer Dim Name As String Dim ApplicationStatus As String Dim Address As String rvPreview.Reset() rvPreview.LocalReport.ReportPath = "C:\Users\xxx\Documents\Visual Studio 2015\Projects\My Project 1\My Project 1\Reports\myReport.rdlc" rvPreview.LocalReport.DataSources.Clear() dataSource = New ReportDataSource() _rparams = New List(Of ReportParameter) With SQLControl.SQLDS.Tables(0) For x As Integer = 0 To .Rows.Count - 1 PID = .Rows(x).Item("PID") Name = .Rows(x).Item("LName") & ", " & .Rows(x).Item("FName") ApplicationStatus = .Rows(x).Item("ApplicationStatus") Address = .Rows(x).Item("StreetAddress") & ", " & .Rows(x).Item("City") _rparams.Add(New ReportParameter("PID", PID)) _rparams.Add(New ReportParameter("Name", Name)) _rparams.Add(New ReportParameter("ApplicationStatus", ApplicationStatus)) _rparams.Add(New ReportParameter("Address", Address)) For Each param As ReportParameter In _rparams rvPreview.LocalReport.SetParameters(_rparams) Next Next x rvPreview.RefreshReport() End With End Sub