This code was made with Crystal 11 r2 and Visual Studio 2005. It may not work correctly with other versions. It shows the code needed to manually populate a subreport in Crystal.
Dim ds1 As DataSet = SqlHelper.ExecuteDataset(ConfigurationManager.ConnectionStrings("PWConnection").ConnectionString, _
CommandType.StoredProcedure, _
"stored_proc_name", _
New SqlParameter("@param", 0))
Dim ds2 As DataSet = SqlHelper.ExecuteDataset(ConfigurationManager.ConnectionStrings("PWConnection").ConnectionString, _
CommandType.StoredProcedure, _
"stored_proc_name2", _
New SqlParameter("@param", 0))
Dim crDoc As New CrystalDecisions.CrystalReports.Engine.ReportDocument
Dim FileName As String = Server.MapPath("ReportsNew\Transcript.rpt")
crDoc.Load(FileName)
crDoc.Database.Tables(0).SetDataSource(ds1.Tables(0))
crDoc.Subreports(0).Database.Tables(0).SetDataSource(ds2.Tables(0))
cvwMain.ReportSource = crDoc