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

Visual studio 2010 如何以编程方式将Crystal Reports子报表导入Visual Studio 2010中的报表部分,visual-studio-2010,crystal-reports,Visual Studio 2010,Crystal Reports,我有一个Crystal Report对象,定义如下: private CrystalDecisions.CrystalReports.Engine.ReportClass rep; 我正在尝试将子报表导入报表的第1节。我尝试了以下代码的变体: rep.ReportClientDocument.SubreportController.ImportSubreport 以下各项之间似乎存在冲突: CrystalDecisions.CrystalReports.Engine 及 是否有人使用VS20

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

private CrystalDecisions.CrystalReports.Engine.ReportClass rep;
我正在尝试将子报表导入报表的第1节。我尝试了以下代码的变体: rep.ReportClientDocument.SubreportController.ImportSubreport

以下各项之间似乎存在冲突:

CrystalDecisions.CrystalReports.Engine


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

到目前为止,Crystal报表不支持动态添加子报表。

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

            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]);

给那些可能还需要这个的人。这是解决办法。试着去做吧

您需要导入这些引用:

  • CrystalDecisions.ReportAppServer.ClientDoc
  • CrystalDecisions.ReportAppServer.Controller
  • 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);

Crystal Reports 2008是否可能,我的意思是没有RAS LIB。
CrystalDecisions.ReportAppServer.ReportDefModel.Section sec = rpt.ReportClientDocument.ReportDefController.ReportDefinition.PageHeaderArea.Sections[0];
rpt.ReportClientDocument.SubreportController.ImportSubreport("subreportname", "subreportpath", sec);