子报表的SSRS子报表VS2010数据检索失败

时间:2010-11-23 23:08:50

标签: ssrs-2008 reporting-services

我是ssrs的子报告部分的新手。我已经设置了一些与标准表和矩阵和Tablix控件一起使用的代码,但是无法加载子报表。我一直都是这样的

是否有人使用Visual Studio 2010的子报表示例代码?

错误消息“子报告的数据检索失败”。

我的代码看起来像这样,虽然我尝试了一些不同的方案来尝试将数据传递到子报表。

    private void LoadReport(string reportName)
    {
        reportViewer1.Clear();
        //http://social.msdn.microsoft.com/Forums/en/vsreportcontrols/thread/b039e765-3cc8-43ec-ae67-14b9656bc981
        reportViewer1.Reset(); 
        // Set Processing Mode
        reportViewer1.ProcessingMode = ProcessingMode.Local;

        // Set RDL file
        reportViewer1.LocalReport.ReportPath = reportName+".rdlc";

    }

    public void LoadReport(IEnumerable products, string reportName, string dataSourceName)
    {
        LoadReport(reportName);

        ReportParameter myParam = new ReportParameter("ReportParameter1", st.ToString() + " TO " + et.ToString());
            reportViewer1.LocalReport.SetParameters(new ReportParameter[] { myParam });

        reportViewer1.LocalReport.DataSources.Add(
            new ReportDataSource(dataSourceName, products));


        reportViewer1.LocalReport.DataSources.Add(
            new ReportDataSource(dataSourceName+"Subreport", products));

        // Process and render the report
        reportViewer1.RefreshReport();
    }

private void LoadReport(string reportName) { reportViewer1.Clear(); //http://social.msdn.microsoft.com/Forums/en/vsreportcontrols/thread/b039e765-3cc8-43ec-ae67-14b9656bc981 reportViewer1.Reset(); // Set Processing Mode reportViewer1.ProcessingMode = ProcessingMode.Local; // Set RDL file reportViewer1.LocalReport.ReportPath = reportName+".rdlc"; } public void LoadReport(IEnumerable products, string reportName, string dataSourceName) { LoadReport(reportName); ReportParameter myParam = new ReportParameter("ReportParameter1", st.ToString() + " TO " + et.ToString()); reportViewer1.LocalReport.SetParameters(new ReportParameter[] { myParam }); reportViewer1.LocalReport.DataSources.Add( new ReportDataSource(dataSourceName, products)); reportViewer1.LocalReport.DataSources.Add( new ReportDataSource(dataSourceName+"Subreport", products)); // Process and render the report reportViewer1.RefreshReport(); }

2 个答案:

答案 0 :(得分:3)

来自金辰微软,主持人用户奖牌 msdn论坛上的答案 http://social.msdn.microsoft.com/Forums/en-US/sqlreportingservices/thread/5d2aed0b-ea69-4cbb-b3c4-b306a48fbc30

非常感谢!!!

我确实有这个代码,但我在表单设计器中添加了事件,我通过GUI事件属性窗口添加了东西

按照你的例子我移动了这一行

reportViewer1.LocalReport.SubreportProcessing + = new Microsoft.Reporting.WinForms.SubreportProcessingEventHandler(this.reportViewer1_suberport1);

从form.designer.cs到刷新报告之后,就像你在你的例子中所做的那样,现在就可以了!

谢谢你真棒的感恩节,谢谢

reportViewer1.RefreshReport(); reportViewer1.LocalReport.SubreportProcessing += new Microsoft.Reporting.WinForms.SubreportProcessingEventHandler(this.reportViewer1_suberport1);

   private void reportViewer1_suberport1(object sender, SubreportProcessingEventArgs e)
    {

        ReportDataSource r=reportViewer1.LocalReport.DataSources[0];
        e.DataSources.Add(r);

    }

private void reportViewer1_suberport1(object sender, SubreportProcessingEventArgs e) { ReportDataSource r=reportViewer1.LocalReport.DataSources[0]; e.DataSources.Add(r); }

答案 1 :(得分:1)

我没有发现将事件处理程序移动到另一个位置有助于此特定错误。对于这个错误,解决了什么问题,你必须确保子报表可以无错误地运行。然后,将其与主报告联系起来。就我而言,我的报告在IDE中使用的是不同于我在代码中提供的数据集。