Torna al Thread
DataSet ds = new DataSet();
ds.ReadXml(@"c:\dsDati.xml");
DataTable dt1 = ds.Tables["tabella_padre"]; //leggo i dati per il report principale
DataTable dt2 = ds.Tables["tabella_figlio"]; //leggo i dati per il subreport
CrystalDecisions.CrystalReports.Engine.ReportDocument rd = new CrystalDecisions.CrystalReports.Engine.ReportDocument();
rd.Load(@"c:\CrystalReport2.rpt"); //carico il report
rd.SetDataSource(dt1); //gli do in pasto i dati per il report padre
rd.OpenSubreport("Report_Figlio").SetDataSource(dt2); //ed ecco i dati per il report figlio, "Report_Figlio" è la proprietà in Subreportname
crystalReportViewer1.ReportSource = rd; //assegno al CrystalReportViewer per la visualizzazione
ds.Dispose();