有test.rpt (主报表),test1.rpt,test2.rpt是子报表主、从之间没有数据关联,只是组合显示在test.rpt里面 test1.rpt和test2.rpt 要显示在"报表页脚"里头myDs有三个dt ,分别绑定,基本代码如下:string sFile = Server.MapPath("test.rpt");       oRpt.Load(sFile);
        oRpt.SetDataSource(myDs.Tables[0]);
        
        if (sRptFileName == "hr_payroll_analyze_second.rpt")
        {
            ReportDocument oSub1 = oRpt.OpenSubreport("test1.rpt");
            oSub1.SetDataSource(myDs.Tables[1]);            ReportDocument oSub2 = oRpt.OpenSubreport("test2.rpt");
            oSub1.SetDataSource(myDs.Tables[2]);        }
        CrystalReportViewer1.ReportSource = oRpt; 问题:myDs.Tables[1],myDs.Tables[2]都有数据,
     但两个子报表没有任何显示,点解?

解决方案 »

  1.   

    请使用table的copy方法,很可能table别释放了,如下:
    if (sRptFileName == "hr_payroll_analyze_second.rpt")
            {
                ReportDocument oSub1 = oRpt.OpenSubreport("test1.rpt");
                oSub1.SetDataSource(myDs.Tables[1].Copy());            ReportDocument oSub2 = oRpt.OpenSubreport("test2.rpt");
                oSub1.SetDataSource(myDs.Tables[2].Copy()););        }
      

  2.   

    填充表时出了问题,使用不同的SqlDataAdapter,如
    SqlDataAdapter da1,da2,da3;试试
      

  3.   

    if (sRptFileName == "hr_payroll_analyze_second.rpt")
            {
                ReportDocument oSub1 = oRpt.OpenSubreport("test1.rpt");
                oSub1.SetDataSource(myDs.Tables[1].Copy());            ReportDocument oSub2 = oRpt.OpenSubreport("test2.rpt");
                oSub1.SetDataSource(myDs.Tables[2].Copy()););        }
      

  4.   

    没有用啊,我的test1.rpt,test2,rpt是单独存储的 ,ds中的3个dt 偶确定有数据.