Search code examples
c#crystal-reports

How to set datasource of Sub crystal report in c# win form app


I am using this code to load a main report and a subreport inside the main report. The main report is a blank one and just contains subreport.

Here is my code:

MySqlConnection cnn;
string connectionString = null;
string sql = null;

connectionString = "Server = BC; Database = mydb1; Uid = root; Pwd = abc123;";
cnn = new MySqlConnection(connectionString);
cnn.Open();

sql = "SELECT * from mytable1 ";
MySqlDataAdapter dscmd = new MySqlDataAdapter(sql, cnn);
DataSet1 ds = new DataSet1();
dscmd.Fill(ds, "Imagetest");
cnn.Close();

ReportDocument cryRpt = new ReportDocument();
cryRpt.Load("C:/Subreport.rpt");
cryRpt.SetDataSource(ds.Tables[1]);

crystalReportViewer1.ReportSource = "C:/MainReport.rpt";
crystalReportViewer1.Refresh();

When I run the application I just see main report with blank subreport.


Solution

  • ReportDocument cryRpt = new ReportDocument();
    cryRpt.Load("C:/MainReport.rpt");
    cryRpt.DataSourceConnections.Clear();
    cryRpt.SetDataSource(ds.Tables[0]);
    cryRpt.Subreports[0].DataSourceConnections.Clear();
    cryRpt.Subreports[0].SetDataSource(ds.Tables[0]);
    crystalReportViewer1.ReportSource = cryRpt;
    crystalReportViewer1.Refresh();