none
代码不能改变水晶报表的数据集? RRS feed

  • 问题

  • 为什么这个代码不能改变水晶报表的数据集?没有数据出来,只有列头

    参考http://blog.128d.com/post/8.html

     

       private void ConfigureCrystalReports()
    {
        //当前业务的报表打印文件
        string RPTFile = "";
        //当前业务的报表打印数据集
        DataSet ds = null;

        #region 获取报表打印文件
        if (Session["rf"] == null)
        {
            RPTFile = Server.MapPath("myrpt.rpt");
            Session["rf"] = RPTFile;
        }
        else
            RPTFile = Session["rf"].ToString();
        #endregion

        #region 获取当前业务的报表打印数据
        if (Session["pd"] == null)
        {
            ds = new DataSet();
            string sql = "";
            sql = "select top 10 * from viewProflow";
           // DataSet masterDs = Database.ExecuteDataSet(sql);
            //将主表添加到报表数据集中
            //ds.Merge(masterDs);
            ds = Database.ExecuteDataSet(sql);
            //利用同样的方法添加子表或其他的表,甚至可以添加表和表之间的关系

            //上述方法也可以从其他数据源读入数据,包括Access数据库、xml数据等

            Session["pd"] = ds;
        }
        else
            ds = (DataSet)Session["pd"];
        #endregion

        if (Session["reportDocument"] == null)
        {
            reportDocument = new ReportDocument();
            reportDocument.Load(RPTFile);
            reportDocument.SetDataSource(ds);
            Session["reportDocument"] = reportDocument;
        }
        else
            reportDocument = (ReportDocument)Session["reportDocument"];
       this.CrystalReportViewer1.ReportSource = reportDocument;
       this.CrystalReportViewer1.DataBind();

    }

    2008年9月22日 3:38

答案

  • Code Snippet

     

       private void ConfigureCrystalReports()
    {
        //当前业务的报表打印文件
        string RPTFile = "";
        //当前业务的报表打印数据集
        DataSet ds = null;

        #region 获取报表打印文件
        if (Session["rf"] == null)
        {
            RPTFile = Server.MapPath("myrpt.rpt");
            Session["rf"] = RPTFile;
        }
        else
            RPTFile = Session["rf"].ToString();
        #endregion

        #region 获取当前业务的报表打印数据
        if (Session["pd"] == null)
        {
            ds = new DataSet();
         //   OleDbDataAdapter
            string sql = "";
            sql = "select top 10 * from viewProFlow";
           
            Database.ExecuteReaer(sql);
            //将主表添加到报表数据集中
            ds = Database.ExecuteDataSet(sql, "Viewproflow");//关键在这里。。。。晕死
            //利用同样的方法添加子表或其他的表,甚至可以添加表和表之间的关系

            //上述方法也可以从其他数据源读入数据,包括Access数据库、xml数据等

            Session["pd"] = ds;
        }
        else
            ds = (DataSet)Session["pd"];
        #endregion

        if (Session["reportDocument"] == null)
        {
            reportDocument = new ReportDocument();
            reportDocument.Load(RPTFile);
            reportDocument.SetDataSource(ds);
            Session["reportDocument"] = reportDocument;
        }
        else
            reportDocument = (ReportDocument)Session["reportDocument"];
          this.CrystalReportViewer1.ReportSource = reportDocument;
    }

     

     

    2008年9月22日 5:42

全部回复

  • ds有数据吗

     

    DS里的datatablename 是不是和绑定rpt一样

     

     

    2008年9月22日 3:58
    版主
  •  

    ds有数据,

    ds里的DataTableName不一样。

    我试试 ,谢谢

    2008年9月22日 4:02
  • Code Snippet

     

       private void ConfigureCrystalReports()
    {
        //当前业务的报表打印文件
        string RPTFile = "";
        //当前业务的报表打印数据集
        DataSet ds = null;

        #region 获取报表打印文件
        if (Session["rf"] == null)
        {
            RPTFile = Server.MapPath("myrpt.rpt");
            Session["rf"] = RPTFile;
        }
        else
            RPTFile = Session["rf"].ToString();
        #endregion

        #region 获取当前业务的报表打印数据
        if (Session["pd"] == null)
        {
            ds = new DataSet();
         //   OleDbDataAdapter
            string sql = "";
            sql = "select top 10 * from viewProFlow";
           
            Database.ExecuteReaer(sql);
            //将主表添加到报表数据集中
            ds = Database.ExecuteDataSet(sql, "Viewproflow");//关键在这里。。。。晕死
            //利用同样的方法添加子表或其他的表,甚至可以添加表和表之间的关系

            //上述方法也可以从其他数据源读入数据,包括Access数据库、xml数据等

            Session["pd"] = ds;
        }
        else
            ds = (DataSet)Session["pd"];
        #endregion

        if (Session["reportDocument"] == null)
        {
            reportDocument = new ReportDocument();
            reportDocument.Load(RPTFile);
            reportDocument.SetDataSource(ds);
            Session["reportDocument"] = reportDocument;
        }
        else
            reportDocument = (ReportDocument)Session["reportDocument"];
          this.CrystalReportViewer1.ReportSource = reportDocument;
    }

     

     

    2008年9月22日 5:42