Как мне программно импортировать вложенный отчет Crystal Reports в раздел отчета в Visual Studio 2010

#visual-studio-2010 #crystal-reports

#visual-studio-2010 #crystal-отчеты

Вопрос:

У меня есть объект Crystal Report, определенный следующим образом:

 private CrystalDecisions.CrystalReports.Engine.ReportClass rep;
  

Я пытаюсь импортировать вложенный отчет в раздел 1 отчета. Я пробовал варианты следующего кода:
rep.ReportClientDocument.Контроллер подотчета.ImportSubreport

Похоже, существует конфликт между:

 CrystalDecisions.CrystalReports.Engine
  

и

 CrystalDecisions.ReportAppServer
  

Кто-нибудь программно импортировал вложенный отчет в Crystal, используя VS2010?

Ответ №1:

Для всех, кто сталкивается с этой проблемой, решение таково:

             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. возможно ли это для Crystal Reports 2008, я имею в виду, без библиотек RAS.

Ответ №2:

Для всех, кому это все еще может понадобиться. Вот решение. Попробуйте и работайте!!!

Вам необходимо импортировать эти ссылки:

  • CrystalDecisions.ReportAppServer.ClientDoc
  • CrystalDecisions.ReportAppServer.Контроллеры
  • 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);
  

Ответ №3:

На данный момент в Crystal Reports динамическое добавление вложенных отчетов не поддерживается.