如何以编程方式将Crystal Reports子报表导入Visual Studio 2010中的报表部分

时间:2011-06-08 20:18:29

标签: visual-studio-2010 crystal-reports

我有一个Crystal Report对象,定义如下:

private CrystalDecisions.CrystalReports.Engine.ReportClass rep;

我正在尝试将SubReport导入报告的第1部分。我尝试过以下代码的变体:     rep.ReportClientDocument.SubreportController.ImportSubreport

之间似乎存在冲突:

CrystalDecisions.CrystalReports.Engine

CrystalDecisions.ReportAppServer

是否有人使用VS2010以编程方式在Crystal中导入子报表?

3 个答案:

答案 0 :(得分:4)

对于遇到此问题的任何其他人,解决方案是:

            CrystalDecisions.CrystalReports.Engine.ReportClass rep;
            ReportClientDocumentWrapper doc = (ReportClientDocumentWrapper)rep.ReportClientDocument;
            CrystalDecisions.ReportAppServer.ReportDefModel.Section sec = doc.ReportDefController.ReportDefinition.ReportHeaderArea.Sections[0];
            doc.SubreportController.ImportSubreport("SubReport", csr.ReportFileName, sec);
            rep.OpenSubreport("SubReport").SetDataSource(csr.ds.Tables[0]);

答案 1 :(得分:0)

对于仍然可能需要此人的人。这是解决方案。试试吧!

您需要导入这些参考文献:

  • CrystalDecisions.ReportAppServer.ClientDoc
  • CrystalDecisions.ReportAppServer.Controllers
  • CrystalDecisions.ReportAppServer.ReportDefModel

这是代码:

ReportDocument rpt = new ReportDocument();

rpt.Load("reportPath"));

rpt.SetDataSource(dt);

在主报表中,您必须有一个子报表,并使用此代码从动态路径重新导入

CrystalDecisions.ReportAppServer.ReportDefModel.Section sec = rpt.ReportClientDocument.ReportDefController.ReportDefinition.PageHeaderArea.Sections[0];
rpt.ReportClientDocument.SubreportController.ImportSubreport("subreportname", "subreportpath", sec);

答案 2 :(得分:-3)

截至目前,Crystal Reports不支持动态添加子报告。