日期:2014-02-18  浏览次数:20818 次

 

水晶报表10版本,不再上水晶报表9一样自动帮你给子报表set 记录集,需要你在程序中自己添加

protected CrystalDecisions.Web.CrystalReportViewer CrystalReportViewer1;

DataSet newDs = new DataSet();
     。

     。得到报表的数据集合set给newsDs

   DataSet  dstMain=biz.GetDataSetList(pStart, pEnd, pStoreName);
 newsDs.Tables.Add(dstMain.Tables[0].Copy());//添加主报表数据集

   DataSet dstPOS1 = new DataSet();
      DataSet dstPOS2 = new DataSet();
      dstPOS1 = biz.GetDataSetList(pStart, pEnd, pStoreName1);
      dstPOS2 = biz.GetDataSetList(pStart, pEnd, pStoreName2);
      newsDs.Tables.Add(dstPOS1.Tables[0].Copy());//添加子报表数据集
      newsDs.Tables.Add(dstPOS2.Tables[0].Copy());//添加子报表数据集

    。

  Type m_Report_type  = m_Assembly.GetType(ReportClassName);//ReportClassName是报表名
     Object aa = m_Assembly.CreateInstance(m_Report_type.FullName);
     ReportClass reportEngine  = (ReportClass)m_Assembly.CreateInstance(m_Report_type.FullName);

   for(int i=1;i<newDs.Tables.Count;i++)//给子报表赋值
     {
      ReportDocument oSubreport=reportEngine.Subreports[i-1];
      oSubreport.SetDataSource(newDs);
     }

     reportEngine.SetDataSource( newDs );
     CrystalReportViewer1.ReportSource = reportEngine;
     return;