I have a dataset with 2 datatable aand I need to use 2 sql request to display data in crystal report. So I create 2 datatable in my dataset (DataTable1 and dataTable2) I tried this code but it always execute the second sql request!!
con.ConnectionString = @"connection";
string sql = "MyRequest1";
string sql1 = "MyRequest2";
DataSet1 ds = new DataSet1();
SqlDataAdapter dad = new SqlDataAdapter(sql, con);
SqlDataAdapter dad1 = new SqlDataAdapter(sql1, con);
dad.Fill(ds.Tables["DataTable1"]);
dad1.Fill(ds.Tables["DataTable2"]);
CrystalReport1 report = new CrystalReport1();
report.SetDataSource(ds.Tables["DataTable2"]);
report.SetDataSource(ds.Tables["DataTable1"]);
crystalReportViewer1.ReportSource = report;
crystalReportViewer1.Refresh();
You would need to merge the datatables into one and set them. Every time you invoke
SetDataSource
with a datatable, you are overriding the previous data.Use the
Merge()
functionality to achieve this -the solution is to implement a Datatable Method for each DataTable used in the Dataset: example for the 1st Datatable:
and in the print button you add this code:
It works successfully :)