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

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

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

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

实现思路:

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

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

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

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

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

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

我们把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)+”月”)。

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

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

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

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

加入超链接属性:

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

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

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

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

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

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

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

  1. 创建交叉表_【零售】Tableau LOD+表计算做交叉购买分析

    今天客户咨询我一个问题,忙完了细细思考,非常值得写一篇小文章梳理其中的逻辑.此类的问题经常被人问及,之前也零散地分享过,终归不够系统,此次尝试说一下相关的业务需求和背后的技术逻辑.本文阐述一种角度-- ...

  2. mysql账目表_数据库1(数据库、表及表数据、SQL语句)

    01数据库概念 A: 什么是数据库 数据库就是存储数据的仓库,其本质是一个文件系统,数据按照特定的格式将数据存储起来, 用户可以对数据库中的数据进行增加,修改,删除及查询操作. B: 什么是数据库管理 ...

  3. mysql语句创建学生表_用sql语句创建学生表的方法是什么

    用sql语句创建学生表的方法是什么 发布时间:2020-08-25 11:53:33 来源:亿速云 阅读:123 作者:小新 小编给大家分享一下用sql语句创建学生表的方法是什么,希望大家阅读完这篇文 ...

  4. mysql交互式创建表_用mysql语句创建数据表详细教程

    MySQL不仅用于表数据操纵,而且还可以用来执行数据库和表的所有操作,包括表本身的创建和处理. 一般有两种创建表的方法: 1.使用具有交互式创建和管理表的工具: 2.表也可以直接用MySQL语句操纵. ...

  5. remapkey不能打开注册表_到底要不要清理注册表?

    注册表是Windows操作系统的一个核心数据库,记载着机子的硬件信息.系统配置.用户配置等各种"高大上"的数据.对于Windows用户来说,如果不会手动修改个注册表项,简直都不好意 ...

  6. hive增量表和全量表_你真的了解全量表,增量表及拉链表吗?

    1 Mysql数据准备 第一天 9月10号数据 1,待支付,2020-09-10 12:20:11,2020-09-10 12:20:112,待支付,2020-09-10 14:20:11,2020- ...

  7. python mysql分库分表_干货 : 常用MySQL分库分表方案

    Python乱炖推荐搜索后浪 动森玩家 送书 数据分析 一.数据库瓶颈 不管是IO瓶颈,还是CPU瓶颈,最终都会导致数据库的活跃连接数增加,进而逼近甚至达到数据库可承载活跃连接数的阈值.在业务Serv ...

  8. wps交叉表_利用Excel电子表格制作交叉报表

    众所周知,中国式报表的特点就是格式复杂,信息量大.中国式报表的复杂大多都是表头比较复杂,三五层的大格嵌小格.带斜线的表头都很常见,所以中国式报表很少有不带格线的,如果没有格线的话很容易看走眼.中国式报 ...

  9. java 杰表_【汉王OCR和杰表sdk(web报表二次开发包,java语言) 2.8哪个好用】汉王OCR和杰表sdk(web报表二次开发包,java语言) 2.8对比-ZOL下载...

    杰表sdk可以用来开发基于web的报表系统,使用杰表sdk可以使杰表系统系统更好的集成到您的项目中,本开发包通过几个不同环境下的代码示例,来说明如何使用杰表API,来新建,修改,发布,浏览,打印报表. ...

最新文章

  1. 软件性能测试vu脚本录制,利用LR插件完成性能测试脚本
  2. Bioinformatics|基于知识图谱嵌入的药物靶标发现
  3. C# 多线程并发锁模式-总结
  4. java软件测试技能要求_软件测试需要掌握什么技能
  5. 你的gpu驱动程序不满足_英特尔图形驱动程序现在在Windows/Linux之间共享约60%的代码库...
  6. ubuntu最基本的软件
  7. android愤怒小鸟游戏、自定义View、掌上餐厅App、OpenGL自定义气泡、抖音电影滤镜效果等源码...
  8. 2014.11.12模拟赛【美妙的数字】| vijos1904学姐的幸运数字
  9. Unity打包APK细节(翻译自官网)
  10. 未来的信息化,就是挖掘企业数据、提升战略决策
  11. Poj2259 Team Queue 【队列】
  12. python函数手册 chm_python中文手册chm
  13. ubuntu20.04下rabbitvcs使用svn无法保存密码
  14. Python接口自动化测试
  15. 找工作时单位普遍要求 35 岁以下,那 35 岁以上的人都干嘛去了?
  16. 比较好的java网站
  17. 不可重复读,虚读和脏读的区别
  18. 数据解读:在上海,创业者真的不受待见吗?
  19. Hadoop 集群在WebUI界面不能下载文件
  20. 软交换总结之五-GPRS相关:PCU与RPP的经典之作

热门文章

  1. python集合的两种类型_python 入门之 – 集合类型(十九)
  2. delphi excel取批注所在的行列_35个Excel使用技巧
  3. ps一点等于多少厘米_劝告大家:女人40岁后,体重多少算正常?太瘦也不好
  4. python 物理引擎 摩擦力_参赛作品2-phenom的2D物理引擎
  5. ducker桌面版更改安装位置_Ubuntu 16.04 安装 Docker和默认存储路径修改
  6. Linux 驱动开发之内核模块开发 (三)—— 模块传参
  7. word文档中插入特殊字符
  8. 修改ant design vue中的Icon图标颜色
  9. React开发(268):debounce is not a function报错
  10. [react] react怎么拿到组件对应的DOM元素?