知识库

推荐内容

快逸做的更好

产品优势

您的位置: 首页 > 知识库 > 设计基础 > 一个多重参数报表的制作

一个多重参数报表的制作

一个多重参数报表的制作需求背景

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

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

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

3、  选择汇总方式

 

分析

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

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

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

详细步骤

制作参数报表

1、选择字段

 

 

 

2、汇总城市

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

 

 

3、  汇总方式

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

 

 

制作主表

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

        

其中:

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

另外,C、F、I列的表达式分别为: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>

 

总结

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

标签:
发布日期:2012/04/24
本文分类: 设计基础