vs2010调用多表数据的时候一般是建立视图,我尝试过把2个table放在一个报表数据源里,但是始终没有成功。
所以我是用视图实现多表数据的。
string strconn = "";
SqlConnection conn = new SqlConnection(strconn);
SqlDataAdapter ad = new SqlDataAdapter("select * from Staff,Department where Staff.DeptId=Department.DeptId", conn);
DataSet ds = new DataSet();
ad.Fill(ds, "aa");
ReportParameter rp = new ReportParameter("ReportParameter1","a");//这里是把string类型的a作为参数传递给*.rdlc报表数据源的参数ReportParameter1
reportViewer1.LocalReport.SetParameters(new ReportParameter[] { rp });//要在*.rdlc上面的报表数据源上面添加参数ReportParameter1
this.reportViewer1.LocalReport.ReportEmbeddedResource = "RLDC1.Report1.rdlc";//为控件指定文件
this.reportViewer1.LocalReport.DataSources.Clear();
//这里的DataSet1 就是报表数据源的DataSet1,其实DataSet1就是视图,包含了Staff表和Department表数据的视图
//ds.Tables["aa"]是上面我们得到的“select * from Staff,Department where Staff.DeptId=Department.DeptId”
this.reportViewer1.LocalReport.DataSources.Add(new Microsoft.Reporting.WinForms.ReportDataSource("DataSet1",ds.Tables["aa"]));
this.reportViewer1.RefreshReport();
注意:这里的Report1.rdlc要添加DataSet1里面的数据源,只要在Report1.rdlc添加了视图的列,form上面才能看到。
仅供交流