目前在学习制作水晶报表,很多问题,在创建CrystalReport的时候后面程序就不执行了,分步调试发现CrystalReport实例没有创建。怎么回事呢?代码如下:
private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            DataSet1 ds = new DataSet1();
            OracleDataAdapter adapter = new OracleDataAdapter("select * from EMP", Connect.getconStr());
            adapter.Fill(ds,"EMP");
            CrystalReport1 rpt = new CrystalReport1();
            rpt.SetDataSource(ds);
            this.crystalReportsViewer1.ViewerCore.ReportSource =rpt;
        }报表dataset

解决方案 »

  1.   


     // 1.首先在项目的该网页对应的文件夹里面添加新项------选择Crystal 报表(默认名称:CrystalReport.rpt)
            // 2.在次在项目的该网页对应的文件夹里面添加新项------选择添加数据集(默认为:clumn1,可修改)
            // 3.在数据集(默认为:datatable1),右键点属性:添加列(默认为:clumn1,可设置他的名称,默认值,是否设置为主键等。)
            // 4.在Crystal 报表中(默认名称:CrystalReport.rpt),选中右键点 数据库专家----在选择项目数据栏目里面的Ado.net数据集,把我们新建的数据库dataset1,添加
            //   到右边去。 在回到CrystalReport.rpt的页面上,找到资源字段管理器----->在找到下面的数据库字段,将其拖到左边的页眉中间,即第三栏。        //现在的设计已基本完成,现在在后台写代码实现。只是简单的实例,以后将 讲到如何分页,打印,样式布局等。        SqlConnection con = new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["ADOStr"].ToString());
            //获取数据库连接        con.Open();
            //打开连接,记住后面要管理,我这就不用关了。        DataSet1 dsjob = new DataSet1();
            //创建水晶报表数据集        SqlDataAdapter sda = new SqlDataAdapter("select * from t_StudentAdmit", con);        DataSet ds = new DataSet();        sda.Fill(ds);
            //填充数据集,若数据集不为空,才向水晶报表数据集中填充数据.
            if (ds != null && ds.Tables[0].Rows.Count > 0)
            {
                foreach (DataRow dr in ds.Tables[0].Rows)
                {
                    DataRow drjob = dsjob.Tables[0].NewRow();
                    //创建数据行                drjob["f_FlowID"] = dr["f_FlowID"].ToString();
                    //drjob["f_FlowID"] 字段一定是水晶报表数据集中的字段。
                                   drjob["f_StudentID"] = dr["f_StudentID"].ToString();                dsjob.Tables[0].Rows.Add(drjob);                //填充数据集行.
                }
            }
            CrystalReportSource crysource = new CrystalReportSource();
            //水晶报表实例化。        crysource.ReportDocument.Load(Server.MapPath("CReport.rpt"));
            //加载水晶报表.        crysource.ReportDocument.SetDataSource(dsjob);        crysource.DataBind();
            //水晶报表绑定数据。        CrystalReportViewer1.ReportSource = crysource;
           
            CrystalReportViewer1.DataBind();
            //水晶报表控件获取水晶报表绑定的数据源。        con.Close();参考http://www.cnblogs.com/baohaiqi/archive/2010/09/07/1820199.html
      

  2.   

    参考下面博客实现:
    http://www.cnblogs.com/babyt/archive/2005/04/21/142789.html