多重参数报表的制作


需求背景

在参数输入界面(如图示)

1、 选择需要在最终统计表中显示的字段;

2、 选择需要汇总的城市;

3、 选择汇总方式

分析

         需求中动态显示字段的实现可以通过隐藏列的方式实现,如果显示数据量比较大的时候可以考虑宏的方式实现,在这里我们采用隐藏列的方法。

         由于汇总城市的选择是单选的,我们采用报表提供的单选按钮完成。

         汇总方式我们可以通过参数控制行隐藏实现。

详细步骤

制作参数报表

1、选择字段


2、汇总城市

参考选择字段的方式,设置填报属性

3、 汇总方式

下图中两个单元格类型设置为HTML

制作主表

         我们来看一下主表的主要部分设计

        

其中:

    处为设置该列的隐藏属性,在隐藏列中输入表达式:if(like(@cols,"*1*"),false,true)。请注意此处的写法。由于cols参数传递过来的是类似“1,2,3,4”这样的串,所以此处采用上述表达式控制。

另外,CFI列的表达式分别为:if(like(@cols,"*2*"),false,true)if(like(@cols,"*3*"),false,true)if(like(@cols,"*4*"),false,true)

    处表达式为:if(@sumType=="1","北京小计:",@sumType=="2","上海小计:","小计:")

    处设置隐藏行,以区别不同的汇总方式。在隐藏行中设置表达式:if(@flag=="1",true,false)

JSP文件

下面是发布该报表的jsp中的部分关键代码

request.setCharacterEncoding( "GBK" );

         String report = request.getParameter( "raq" );

         String reportFileHome=Context.getInitCtx().getMainDir();

         StringBuffer param=new StringBuffer();

         String flag = request.getParameter("flag");

         //保证报表名称的完整性

         int iTmp = 0;

         if( (iTmp = report.lastIndexOf(".raq")) <= 0 ){

                   report = report + ".raq";

                   iTmp = 0;

         }

        

         Enumeration paramNames = request.getParameterNames();

         if(paramNames!=null){

                   while(paramNames.hasMoreElements()){

                            String paramName = (String) paramNames.nextElement();

                            String paramValue=request.getParameter(paramName);

                            if(paramValue!=null){

                                     //把参数拼成name=value;name2=value2;.....的形式

                                     param.append(paramName).append("=").append(paramValue).append(";");

                            }

                   }

         }

<script language="javascript">

         function sumCode(flag){

                   //alert("调用成功!");

                   var cols = document.getElementById("report1_C2").value;

                   alert("选择字段====="+cols);

                   var sumType = document.getElementById("report1_C4").value;

                   alert("汇总方式===="+sumType);

                  

                   var url="showReport.jsp?raq=/helishiDemo.raq&flag="+flag;

                   url = url+"&cols="+cols;

                   url = url+"&sumType="+sumType;

                   window.open(url);

                  

         }

</script>

总结
        使用报表参数的传递,以及各种隐藏方式的运用,可以实现诸多需求的报表。当然,这些都是在我们不断使用并熟悉报表工具的基础上进行的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值