水晶报表的生动生成功能

本人在前段时间研究了一下关于水晶报表生成的问题,因为没有碰过水晶报表,所以搜了很多内容,经过整合做出一个比较简单的水晶报表。(我是用VS2008做的)

首先应按“推模式”创建报表

1、设计DataSet

    

1)新建DataSet 

 

 

2)连接数据库、并把所需字段或表放入DataSet如图:

 

 

 

 

 

 

2、创建报表文件

1)新建报表文件

        

 

 

 

   

 

 

 

 

 

 

 

 并按完成(除非有其他设置)

 

 

 

 

 按完成后的报表样式 

 

 

 

2)新建公式字段(这个是动态生成列的关键)

 

创建空白的公式字段并保存

请根据你想动态生成字段的最大值来创建公式字段,如:我要在7个列中动态显示,即最大值为7,创建7个公式字段(切记,公式字段为空白。使用专家、编辑器,都可以,只要是空白的就行了)

 

 

 

把上表(报表)的内容删去,改为放入你自己刚才创建的公式字段(表头的名字我改成Text,方便区分)

 

 

对各列抑制显示,选择设置对象格式

 

 

 

选择最右端的 ("X-2")

 

 

 

输入如下代码(x代表1、2.... ,这个与自己起的名字有关)

 

if NextIsNull ({@FormulaFieldx})then
    true
else
    false

 

其他的如此类推

 

 

 

控制代码:

 

private void BindReport(string[]  fldArr)             //fldArr为显示列的名称数组
        {            

            DataSet ds = new DataSet();
            string conn = "DSN=xxxx;uid=xxxx;pwd=123456";
            CrystalReport  cr = new CrystalReport();
            string sql = "select " + str + " from table";
            ReportsService.ReportsService.FillDataSet(ds, "table", sql, conn);
            string[] fldArr = new string[length];
            for (int i = 0; i < fldArr.Length; i++)
            {
                // 将公式绑定到具体字段
                cr.DataDefinition.FormulaFields["FormulaField" + (i + 1).ToString()].Text = "{studentinfo." + fldArr[i] + "}";
                TextObject gettext = cr.ReportDefinition.ReportObjects["Text" + (i + 1).ToString()] as TextObject;
                gettext.Text = fldArr[i];

            }

            cr.SetDataSource(ds);
            CrystalReportViewer.ReportSource = cr;
        }

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鯎鯎

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值