Crystal报表和子报表中的错误

时间:2013-12-12 14:47:34

标签: c# crystal-reports

我创建了一个包含一些子报告的报告。我使用下面的代码填充子报告:

 ReportDocument rep = new ReportDocument();
            rep.Load(Application.StartupPath + "\\" + "salonreport.rpt");                rep.Subreports["rptsalesbydaytypecashdetails"].SetDataSource((DataTable)rptsalesbydaytypecashdetailsDataTable1);

对于上面的代码,引发错误:对象引用未设置为对象的实例。

另一种方法是

 salonreport rep = new salonreport();
                rep.Load(Application.StartupPath + "\\" + "salonreport.rpt");       rep.Subreports["rptsalesbydaytypecashdetails"].SetDataSource((DataTable)rptsalesbydaytypecashdetailsDataTable1);

对于他我收到此错误:无法在清单资源中找到报告。请构建项目,然后重试。

2 个答案:

答案 0 :(得分:0)

尝试下面的代码。我相信你的问题在于文件路径。请使用系统中的有效文件路径替换我的代码中的文件路径。

   public void ReportLoad()    
       {             
         ReportDocument reportDocument = new ReportDocument();       
         string filePath = "C:\Projects\Application\Report\CrystalReport.rpt";               reportDocument.Load(filePath);
         reportDocument.Load(filePath); 
         crystalReportViewer.ReportSource = reportDocument; 
         reportDocument.OpenSubreport("SubReport.rpt")
        }

答案 1 :(得分:0)

您可以使用Server.MapPath(strReportName)来指定路径。

                ReportDocument rd = new ReportDocument();
                string strRptPath = Server.MapPath(strReportName);
                //Loading Report
                rd.Load(strRptPath);

                // Setting report data source
                if (rptSource != null && rptSource.GetType().ToString() != System.String")
                    rd.SetDataSource(rptSource);
                //setting report source for subreports.
                rd.Subreports[0].SetDataSource(subRptSource1);
                rd.Subreports[1].SetDataSource(subRptSource2);