java薪资年龄交叉表_巧用参数实现交叉表行列互换

对于普通的没有olap分析功能的快逸报表而言,一旦发布到web页面后,其样式就被固定了,如果想把报表换种形式展现通常的做法是重新设计一张报表模板来实现,难道快逸报表就没有一种特殊的方法可以解决这样的需求吗?答案就在下面的例子中。

首先来看这样一张报表(quieeReport\webapps\quiee\reportFiles\基础报表\交叉报表.raq),在页面上的展现效果如下图:

xn-tlq48jg9l3vc9u2e01j.png

从上图可以看到这是一个多维交叉分组报表,上表头是地区/城市,左表头是日期。

如果想动态改变一下报表的样式,左表头变成地区和城市的分组展现,上表头变成年份和月份的分组展现,并且只通过一张报表,这就需要用文章标题中提到的:利用参数实现行列变换的方法了。

实现思路:

1. 设计单元格表达式根据参数不同而变化,从而实现样式跟随表达式变动。

2.点击一个超链接按钮通过url强制传参给报表中的单元格,从而控制报表的样式。

本文就以此报表为础,做一个可以行列互换的功能(上表头和左表头互换),实现报表在web页面上样式改变。

第一步:设计器中选择配置–参数

给报表增加一个参数,我们把这个参数叫做转换参数,顾名思义,这个参数就是控制行列转换用的。

xn-8nr85pxwd19cgweuq3e44e2lk.png

第二步:修改单元格表达式,让单元格接受参数

xn-tlq44jud79wukhukbx5jvz5gca498pehb.png

我们把C2单元格的表达式修改为:

=if(@arg1==’1′,ds1.group(year(订购日期),false,订购日期!=null)+”年”,ds1.group(货主地区,false,货主地区!=null))。

此表达式的意思是:当参数arg1的值为1时,C2单元格的表达式为ds1.group(year(订购日期),false,订购日期!=null)+”年”,否则默认为ds1.group(货主地区,false,货主地区!=null)。

关于快逸报表中if()函数的用法请参考快逸帮助文档中的相关介绍。

据这个逻辑,依照地区与城市之间的关系,年份和月份之间的关系,把单元格的表达式做如下修改:

C3:=if(@arg1==’1′,ds1.group(month(订购日期),false)+”月”,ds1.group(货主城市,false))

A4:=if(@arg1==’1′,ds1.group(货主地区,false,货主地区!=null),ds1.group(year(订购日期),false,订购日期!=null)+”年”),

B4:=if(@arg1==’1′,ds1.group(货主城市,false),ds1.group(month(订购日期),false)+”月”)。

第三步:修改交叉表头并在其中设置超链接

xn-tlq44au8fs6grlj6iilj8da011p.png

红色框中的交叉表头区是整张报表的关键,既要在行列转换的时候做到文字跟随变化,又要充当转换控制的按钮。

修改此单元格的表达式为:=if(@arg1==’1′,”分布,运货费,时间”,”时间,运货费,分布”)

然后在此单元格的属性中:

xn-7gt95fgfm8gurbk36k2qh4rflom.png

加入超链接属性:

if(@arg1==null,”/reportJsp/showReport.jsp?raq=/交叉报表.raq&arg1=1″,”/reportJsp/showReport.jsp?raq=/交叉报表.raq”)

xn-66tq4d7vap9kjs8a8xl2ni39d1ubiyz.png

这个超链接的作用就是点击这个单元格,赋予arg参数值,然后通过超链接中的url把参数传递到jsp中的报表里,通过对参数值的判断,来确定超链接中的url,这样就可以来回转换,防止只能转换一次的情况出现。(超链接也可以设置在其他单元格中,本文中这样做是为了美观且容易理解)

接下来,我们把报表发布到页面上去看效果:

xn-1bryeq94b1tcb1a733nufas66clwbh37aoyc.png

点击设置了超链接的表头单元格后,url自动转换为/reportJsp/showReport.jsp?raq=/交叉报表.raq&arg1=1,强制把参数arg=1传给报表的各个单元格,单元格表达式发生变化,报表样式也随之变化,于是实现了行列互换的效果:

xn-1brt1cj6t1vcb1a733nufas66clwbh37aoyc.png

此时,如果想转换到前一种样式,只需再点击一次表头单元格即可。

在这个报表中,我们运用了很多颇具技巧性的方法,例如参数结合超链接的运用,if()函数的运用,往往一些看似很复杂的报表,通过一些技巧性的做法都是可以迎刃而解的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/409550.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

spring 环境

引用:http://www.189works.com/article-96241-1.html 准备阶段: 到Spring官网下载所需的API包,其中spring-framework-X.X.X.RELEASE-with-docs.zip压缩包需要下载,里面的dist目录下有所需的API,还有一个是com.springsource.org.apache.common…

php 上传多文件_php 多文件上传的实现实例

首先向大家讲解一下实现的方法。要实现多文件上传,我们可以在form表单中添加多个input file域,然后将这些input file的name属性设置为相同的名称且使用数组的形式命名,例如filename[]。至于文件上传的php代码和单个文件上传是一样的道理。下面…

JavaScript代码优化实战之一:缓存变量,关键字过滤

无意中看到某网站的一段JS代码: 1 function clearSearchText(){2 var searchtext document.getElementById("searchwordl").value3 document.getElementById("searchwordl").value"";4 }5 function replaceALL(){6 va…

html.parser python_python模块之HTMLParser

HTMLParser是python用来解析html的模块。它可以分析出html里面的标签、数据等等,是一种处理html的简便途径。 HTMLParser采用的是一种事件驱动的模式,当HTMLParser找到一个特定的标记时,它会去调用一个用户定义的函数,以此来通知程…

php 5.4 aws,使用 Amazon EC2 管理 AWS SDK for PHP 实例 - 适用于 PHP 的 AWS 开发工具包

AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门。本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。使用 Amazon EC2 管理 AWS SDK for PHP 实例以下示例演示如何&…

python图片分类毕业设计成果报告书_毕业设计成果报告书模板.doc

毕业设计成果报告书成 果:姓 名:学 号:专 业:区 队:指导老师:二〇XX年X月目  录TOC \o "1-3" \h \z \u HYPERLINK \l "_Toc432664597" 一、选题背景 PAGEREF _Toc432664597 \h 1HYPE…

常用正则表达式例子

1。^\d$  //匹配非负整数(正整数 0) 2。^[0-9]*[1-9][0-9]*$  //匹配正整数 3。^((-\d)|(0))$  //匹配非正整数(负整数 0) 4。^-[0-9]*[1-9][0-9]*$  //匹配负整数 5。^-?\d$    //匹配整数 6。^\d(\.\d)?$  //…

msf生成php,使用msfpayload生成后门(asp,aspx,php,jsp,exe)等

msfpayload与msfencode参数说明执行msfpayload -h查看都有哪些参数执行msfencode -h查看都有哪些参数生成backdoor类型可以生成asp、aspx、php、jsp、war、exe等多种类型,下面介绍的使用方法就不一一测试了.msfpayload生成linux backdoor目标机器运行linux2,本机监听下端口,使用…

概括ADO.NET数据库连接的所有形式(基础)

概括ADO.NET数据库连接的所有形式(基础) 可能大家进来会喷笔者,这么基础的知识还放在首页。那么笔者就要问问大家了,你可能熟悉其中部分数据库读取的形式,但是熟悉全部的估计很少,或者你完全忘记了,因为这些…

python 进程池不足_python 进程池pool简单使用

平常会经常用到多进程,可以用进程池pool来进行自动控制进程,下面介绍一下pool的简单使用。需要主动是,在Windows上要想使用进程模块,就必须把有关进程的代码写if __name__ ‘__main__’ :语句的下面,才能正常使用Wind…

php opendir 不能用,PHP opendir() 函数

打开一个目录,读取它的内容,然后关闭:$dir "/images/";// Open a directory, and read its contentsif (is_dir($dir)){if ($dh opendir($dir)){while (($file readdir($dh)) ! false){echo "filename:" . $file . &q…

程序集

程序集 在C#中,我们要使用反射,主要有三个方面: 第一,反射程序集,模块,类的成员以及成员的一些信息; 第二,接下来就是动态调用类的成员方法; 第三个方面就动态产生程序集…

从像素坐标到相机坐标_【视觉知识】机器视觉几何坐标概论

作者:林青春来源:知乎一、机器视觉几何坐标概论机器视觉系统有三大坐标系,分别是:1、世界坐标系,2、摄像机坐标系,3、图像(像素)坐标系。1、世界坐标系世界坐标系(Xw,Yw,Zw)是目标物…

php 对象 数量,php – Symfony2 / Doctrine如何在实体中存储相关对象的数量

我已经设置了一个包含测试对象的包,该对象包含许多testQuestion对象,每个对象都是一个问题和给定的答案(如果没有答案则为0).从树枝上我希望能够从测试对象中获取信息,说明有多少问题以及已经回答了多少问题.我创建了一个查询来将其从数据库中拉出来,在测试实体中我创建了2个新…