2015-09-24 66 views
0

使用VB.NET 2010和SQL Server 2008 R2。VB.NET 2010 RDLC子報表「數據檢索失敗的子報表」

我用RDLC報告繼承了一個應用程序。我以前沒有用過。報告創建並運行正常,但發件人忽略了一組數據,即報告的「父」記錄的子報告。

我試着添加一個子報表,將主輸入參數指向子(它們使用相同的信息)。讓子使用指向存儲過程的數據集並顯示結果。

任何試圖執行(和顯示)子報表數據失敗的消息

數據檢索失敗報表....位於....請查看日誌文件以獲取更多信息。

關閉日誌文件位於何處?

我可以通過params,只要我添加一個數據集w /存儲過程,我可以看到如果我報告的參數。如果我添加存儲過程...沒有。我試圖在互聯網上找到一個修復程序來創建XSD存儲過程調用的副本......但這也不起作用。

主報告正常工作沒有小組。

想法?

我錯過了什麼?

我不應該能夠添加一個子報表,鏈接參數和有子報表顯示相關的信息?

這裏是我的代碼來調用主報告:

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

如果我記得正確的話,你需要處理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 
+0

這是如何工作的,如果我在使用其他存儲過程作爲記錄源不是「mydatatable」? – JTSOne

+0

好的,你正在使用一個'TableAdapter'來使用一個存儲過程來填充'DataSet'中的'DataTable'?傳遞你已經填充的目標'DataTable',我有* MyDataTable *。 –

+0

I.e.'New ReportDataSource(「DatasetNameInReport」,Me.CodingControlDataSet.spOtherStoredProcedureName)'。 –