2011-06-08 21 views
5

Tengo un objeto de Crystal Report se define de la siguiente manera:¿Cómo mediante programación importar un Crystal Reports Subinforme en una sección de informes en Visual Studio 2010

private CrystalDecisions.CrystalReports.Engine.ReportClass rep; 

Estoy intentando importar un subinforme en la Sección 1 del informe . He probado variantes del siguiente código: rep.ReportClientDocument.SubreportController.ImportSubreport

Parece que hay conflicto entre:

CrystalDecisions.CrystalReports.Engine 

y

CrystalDecisions.ReportAppServer 

Alguien ha importado una programación Sub- ¿Informar en Crystal usando VS2010?

Respuesta

3

Para cualquier otra persona que se encuentra con este problema, la solución es:

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

es posible que Crystal Reports 2008, es decir, sin librerías RAS. – Saar

-3

La adición de subinformes dinámicamente no se admite en Crystal Reports a partir de ahora.

0

Para cualquier persona que aún podría necesitar esto. Aquí está la solución. Pruébalo y trabaja!

debe importar estos Referencias:

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

aquí está el código:

ReportDocument rpt = new ReportDocument(); 

rpt.Load("reportPath")); 

rpt.SetDataSource(dt); 

Dentro del informe principal que debe tener un informe integrado y con este código que volver a importar de la ruta dinámica

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