#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 динамическое добавление вложенных отчетов не поддерживается.