使用VB.NET 2010和SQL Server 2008 R2。
我继承了一个带有RDLC报告的应用程序。我以前没用过那些。该报告已创建并正常工作,但发起人遗漏了一组数据,即报告的“父”记录的子报告。
我试图添加一个子报表,将main的输入参数指向sub(它们使用相同的信息)。让sub使用指向Stored过程的数据集并显示结果。
任何执行(和显示)子报告数据的尝试都会失败并显示消息
子报告的数据检索失败....位于....请检查日志文件以获取更多信息。
关闭日志文件的位置/位置?
我可以传递params,只要我添加一个带有存储过程的数据集,如果我报告,我可以看到params。如果我添加存储过程......没有。我尝试在互联网上找到修复程序,以创建XSD存储过程调用的副本...但这也无效。
主要报告在没有Sub。
的情况下正常工作思想?
我错过了什么?
我不应该能够添加子报表,链接参数并使子报表显示相关信息吗?
以下是我调用主报告的代码:
Dim adapter As New SqlClient.SqlDataAdapter
Dim table As New DataTable
Try
Cursor.Current = Cursors.WaitCursor
ReportViewer1.ProcessingMode = Microsoft.Reporting.WinForms.ProcessingMode.Local
ReportViewer1.LocalReport.ReportPath = Application.StartupPath & "\IndividualInterviewerDataReport.rdlc"
Dim ReportParameters(5) As Microsoft.Reporting.WinForms.ReportParameter
ReportParameters(0) = New Microsoft.Reporting.WinForms.ReportParameter("SurveyName", frmMain.SurveyName)
ReportParameters(1) = New Microsoft.Reporting.WinForms.ReportParameter("Interviewer", InterviewerId)
ReportParameters(2) = New Microsoft.Reporting.WinForms.ReportParameter("Panel", PanelMonth)
'
'
ReportParameters(3) = New Microsoft.Reporting.WinForms.ReportParameter("- Version: " + ProductVersion)
ReportParameters(4) = New Microsoft.Reporting.WinForms.ReportParameter("PanelYear", PanelYear)
ReportParameters(5) = New Microsoft.Reporting.WinForms.ReportParameter("SurveyNbr", frmMain.SurveyNum)
ReportViewer1.LocalReport.SetParameters(ReportParameters)
ReportViewer1.ShowPrintButton = True
ReportViewer1.ZoomPercent = 100
Me.spInterviewerDataByPanelTableAdapter.Connection.ConnectionString = My.Settings.DBConnection
Me.spInterviewerDataByPanelTableAdapter.Fill(Me.CodingControlDataSet.spInterviewerDataByPanel, frmMain.SurveyNum, PanelYear, PanelMonth, InterviewerId)
Me.ReportViewer1.RefreshReport()
答案 0 :(得分:1)
如果我没记错,您需要处理SubreportProcessing
对象的LocalReport
事件,并在那里设置子报告数据。您可以通过为事件处理程序设置EventArgs
参数的属性来执行此操作。
这里有一些代码(改编自Microsoft documentation):
'In your report setup code'
AddHandler Me.ReportViewer1.LocalReport.SubreportProcessing, _
AddressOf DemoSubreportProcessingEventHandler
'Event hander
Public Sub DemoSubreportProcessingEventHandler(ByVal sender As Object, _
ByVal e As SubreportProcessingEventArgs)
e.DataSources.Add(New ReportDataSource("DatasetNameInReport", MyDataTable ))
End Sub