水晶报表初学者,想实现如上功能。先已作的步骤如下:
1. 在CR_UserType.aspx中拖了一个CrystalReportViewer ID="CrystalReportViewer1"的控件;
2.在CR_UserType.aspx.cs文件中填入如下代码:
        string sql = "select count(*)From USER_INFO_TABLE where CHARGETYPE='全费'";
        OracleConnection oracon = db.getcon();
        oracon.Open();
        OracleDataAdapter da = new OracleDataAdapter(sql, oracon);
        DataSet ds = new DataSet();
        da.Fill(ds, "USER_INFO_TABLE");
        ReportDocument rd = new ReportDocument();
        string path = Server.MapPath("\\MapXtreme_盘锦\\reports\\CR_UserType.rpt");
        rd.Load(path);
        rd.SetDataSource(ds.Tables["USER_INFO_TABLE"]);
        this.CrystalReportViewer1.ReportSource = rd;
3.在CR_UserType.rpt里面添加了USER_INFO_TABLE的所有字段问题:现在要怎么做呢?
如何把ds中获得的值在CR_UserType中显示呢?请大虾帮忙!

解决方案 »

  1.   

    一般報表選擇xsd類型為數據源
    你新建個數據集xsd結尾的
    然后把要顯示的字段添加到數據集里面就可以了
    然后在用這個數據集做數據源綁定報表
      

  2.   

    这个做的是完全不对了,
    select count(*)From USER_INFO_TABLE where CHARGETYPE='全费'
    返回的是一个记录数,
    而你的报表“里面添加了USER_INFO_TABLE的所有字段”,这个完全不搭边可以这样做。SQL改成
    select * From USER_INFO_TABLE where CHARGETYPE='全费'而在报表模板上点右键,插入,汇总,按照操作,选一个字段,选“计数”汇总方式就行了
      

  3.   

    谢谢telankes2000,不过我还是没有用你的方法作出来。呵呵,可能是我太菜了,有时间好好研究下。
    谢谢阿泰,总在论坛上看到你的帖子。感觉现在能明白些了,已经用你说的实现了,非常感谢。
      

  4.   

    唉,好像结贴结的太早了。
    能再问个问题吗,现在想增加功能,CHAEGETYPE字段的值有“全费”,“半费”和“免费”三种,我希望在Print_User.aspx中可以选择查询CHARGETYPE的哪个值的用户,可以只选一个,也可以全选,如果全选的话,我希望在打印页面中可以分别显示“全费”,“半费”和“免费”的用户数,这个要怎么实现呢?不用交叉表。