反馈已提交
网络繁忙
在制作报表时,经常遇到需要通过点击标题实现升序和降序交换显示。文档 数据集中的排序 中,可通过定义数据集参数,利用动态参数实现点击标题动态排序。
但有些情况下无法用到数据集排序,例如制作报表时有一列是通过其他数据列计算得出的,如下图中「利润」是由(单价-进价)*数量得来的,那么这时要如何实现直接点击标题动态排序呢?
通过添加「动态参数」类型的 超级链接 和在单元格 扩展后排序 中添加公式来实现,即点击数据列标题时,将该数据列所在单元格作为参数传递过去,在扩展后排序公式中接收该参数,根据参数的不同,实现不同的排序。
注1:数值型和字符型的设置有所不同,详情在示例中查看。
注2:本文讲解仅一列数据变换排序,多列动态排序请参考文档 多列动态排序。
新建普通报表,新建数据库查询 ds1,SQL 查询语句为:SELECT * FROM 订单明细 limit 20。如下图所示:
将数据集中的数据拖入表格,设置 A2 单元格的「数据设置」为「列表」,F2 单元格中插入公式:(C2 - E2) * D2,设计报表样式如下图所示:
选中「利润」标题所在 F1 单元格,添加一个「超级链接>动态参数」 a,参数值为公式:if($a=1,-1,1),如下图所示:
在「最父格」A2 单元格设置,选中 A2 单元格,选择「单元格属性>扩展」,设置「扩展后排序」为升序,输入公式:if($a=1,F2,-F2),F2 表示按照 F2 单元格的值进行排序。如下图所示:
注:数值型字段排序时若字段为空,需要在排序公式中给空值赋值。详情可参见 排序时数值型字段存在空值时报错。
注:由于只有数值型数据才有负数,字符型数据没有负数,故这种排序方法只适用于「数值型字段」排序。
保存报表,点击「分页预览」,效果与 1.1 节效果图一致。
App 端和 HTML5 端均支持,效果如下图所示:
新建普通报表,新建数据库查询 ds1,SQL 查询语句为:SELECT * FROM 销量 where 地区='华北'。如下图所示:
将数据集中的数据拖入表格,设置 A2 单元格的「数据设置」为「列表」,报表样式如下图所示:
选中「销售员」标题所在 B1 单元格,添加一个「超级链接>动态参数」 参数设置如下表:
步骤如下图所示:
选中 A2 单元格,选择「单元格属性>扩展」,设置「扩展后排序」为升序,输入公式:INARRAY(EVAL($asc),SORTARRAY(EVAL($asc+"[!0]")))*$a。
公式说明如下表:
EVAL($asc)
返回表达式 $asc ,即 B2 单元格计算后的结果。
返回排过序的 array 数组
注:当数组元素存在类型不一致或者无法比较时,返回原数组。
保存报表,点击「分页预览」,效果如下图所示:
已完成模板可参见:
%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\SpecialSubject\OrderReport\点击标题改变排序-数值型.cpt
%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\SpecialSubject\OrderReport\点击标题改变排序-字符型.cpt
点击下载模板:
点击标题改变排序-数值型.cpt
点击标题改变排序-字符型.cpt
售前咨询电话
400-811-8890转1
在线技术支持
请前往「服务平台」,选择「在线支持」
热线电话:400-811-8890转2
总裁办24H投诉
热线电话:173-1278-1526
文 档反 馈
鼠标选中内容,快速反馈问题
鼠标选中存在疑惑的内容,即可快速反馈问题,我们将会跟进处理。
不再提示
10s后关闭