我在這裏有點傻眼。我所見過的大多數教程都使用嚮導或內置(或現成)數據集創建報告。我在運行時使用查詢構建我的數據集,所以我不太確定如何採用迄今爲止所見的數據集。程序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