尘絮博客

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

1、按照正常的方法,新建一个报表文件,和数据库中的一张表关联好,设计好报表式样
    和数据库关联时可以先建立一个access文件,做一个假的数据库

2、动态绑定数据源和动态绑架数据以及参数的方式
    protected void Page_Load(object sender, EventArgs e)
    {
        //声明报表的数据对象
        CrystalDecisions.CrystalReports.Engine.Database crDatabase;
        CrystalDecisions.CrystalReports.Engine.Table crTable;
        TableLogOnInfo dbConn = new TableLogOnInfo();
        // 创建报表对象opt
        ReportDocument oRpt = new ReportDocument();

        // 加载已经做好的报表
        oRpt.Load("E:\\Jsmstc\\Jsmstc_MIS Project Managemet\\03_Source\\Web\\ReportTest.rpt");

        //连接数据库,获得相关的登陆信息
        crDatabase = oRpt.Database;

        //定义一个arrtables对象数组
        object[] arrTables = new object[1];
        crDatabase.Tables.CopyTo(arrTables, 0);
        crTable = (CrystalDecisions.CrystalReports.Engine.Table)arrTables[0];
        dbConn = crTable.LogOnInfo;
       
        //设置相关的登陆数据库的信息
        dbConn.ConnectionInfo.DatabaseName = "jsmstc_mis";
        dbConn.ConnectionInfo.ServerName = "192.168.0.50";
        dbConn.ConnectionInfo.UserID = "jsmstc";
        dbConn.ConnectionInfo.Password = "jsmstc";

        //将登陆的信息应用于crtable表对象
        crTable.ApplyLogOnInfo(dbConn);
       
        //填充数据
        M_AdvisoryBusiness AdvisoryBusiness = new M_AdvisoryBusiness(Request.GetHashCode());
        DataTable AdvisoryData = AdvisoryBusiness.GetDataTableForReport();

        oRpt.SetDataSource(AdvisoryData);

        //将报表和报表浏览控件绑定
        CrystalReportViewer1.ReportSource = oRpt;
       
       
        //传递参数
        //setReportParameters();
     
        oRpt.Load("E:\\Jsmstc\\Jsmstc_MIS Project Managemet\\03_Source\\Web\\ReportTest.rpt");
    }

    private void setReportParameters()
    {
        // all the parameter fields will be added to this collection
        ParameterFields paramFields = new ParameterFields();
        // the parameter fields to be sent to the report
        ParameterField pfItemAddr = new ParameterField();
        // 设置在报表中,将要接受的参数字段的名称
        pfItemAddr.ParameterFieldName = "Query1";
        ParameterDiscreteValue dcItemAddr = new ParameterDiscreteValue();

        dcItemAddr.Value = "dd";

        pfItemAddr.CurrentValues.Add(dcItemAddr);
        paramFields.Add(pfItemAddr);


        // 将参数集合绑定到报表浏览控件
        CrystalReportViewer1.ParameterFieldInfo = paramFields;
    }
注意使用动态方式后,在报表设计中不能再使用SQL表达式字段了

3、小技巧
    每一种格式的设置都可以通过Crystal 语法控制是否应用此格式 当为true时应用,为false时不使用

4、边框的设置
    在水晶报表里设好边框后,在winform中是可以看到边框的,但是使用webform显示在页面上是没有边框的(只有当导出时才能看到边框)
   在web页面上显示边框还不知道怎么实现??

5、设置分页
    可以设定每页显示多少条记录,比如每页6条

在详细资料上点格式化节,在后面页新建页打勾
公式中输入:
if onlastrecord then
formula = false
else
if RecordNumber mod 6 =0 then
formula =true
else
formula =false
end if
end if     
    
     '(BASIC 语法)

阅读全文
类别:程序设计 查看评论
posted on 2008-07-24 01:31  暗影无痕  阅读(421)  评论(0编辑  收藏  举报