Establecer datos a un reporte en Crystal Reports .NET

Para establecer los datos a un reporte en Crystal Reports .NET (es decir el métdo PUSH) se puede utilizar el método SetDataSource() del objeto ReportDocument. Sin embargo, si se está utilizando un Dataset que tiene varias tablas enlazadas, hay que tener mucho cuidad con el orden en como se establecen los datos así como en los nombres de las tablas del Dataset que tienen que coincidir exactamente.

Para evitarnos problemas lo mejor es establecer los datos directamente a cada tabla. Esto se puede lograr mediante la propiedad Database del objeto ReportDocument el cual contiene a su vez una colección de objetos Table (de CrystalDecisions.CrystalReports.Engine.Table). Esta colección contiene las tablas que se definieron en el reporte durante el diseño. Cada una de estos objetos Table define un método SetDataSource() para llenar los datos de esa tabla en específico. Por lo tanto se puede hacer lo siguiente:

Dataset dts = new Dataset();
// ... obtener los datos para el reporte
ReportDocument rpt = new MiReporte();
rpt.Database.Tables["tabla1"].SetDataSource(dts.Tables["tabla1"]);
rpt.Database.Tables["tabla2"].SetDataSource(dts.Tables["tabla2"]);
rpt.Database.Tables["tabla3"].SetDataSource(dts.Tables["tabla3"]);
CrystalReportViewer.ReportSource = rpt;

No hay comentarios.: