反馈已提交
网络繁忙
有时用户希望在同一张报表中,可以实现分组动态排序且互不影响的效果。例如当点击华东的销量时,华东的销量改变排序,华北的销量不受到影响;当点击华北的销量时,华北的销量改变排序,华东的销量不受到影响。如下图所示:
第一步:根据「地区」的数量定义成一个数组长度,用数组中的元素存储对应分组的升降序(正数 1 为升序,负数 -1 为降序)。
第二步:当点击销量时,先删除数组中点击位置对应的值,再将变为相反数的值插入到数组中对应的位置。
第三步:设置扩展后排序,先获取点击位置对应的数组中的值,再乘以「销量」所在分组中单元格的值,按正负数的升序改变排序。
新建普通报表,新建数据库查询 ds1,写入 SQL 语句:SELECT * FROM 销量 where 产品='苹果汁' 。
合并 A1~D1 单元格,将「地区」数据列拖入单元格 A1,A2~D2 单元格输入如下图所示标题,A3~D3 单元格拖入对应的数据列。自行设置表格样式,最终效果如下图所示:
选中 D2 单元格,给其添加一个「超级链接>动态参数」,参数名为 a,参数值选择「公式」类型,输入公式:JOINARRAY(ADD2ARRAY(REMOVEARRAY(IF(LEN($a) = 0, RANGE(COUNT(A1[!0]))*0, SPLIT($a, ",")), &A1, 1), IF(INDEXOFARRAY(SPLIT($a, ","), &A1) = 1, -1, 1), &A1),",")
动态参数的作用是点击「销量」时,能按照公式定义的规则返回参数,再根据参数进行排序。
公式说明如下:
1)步骤一:IF(LEN($a) = 0, RANGE(COUNT(A1[!0]))*0, SPLIT($a, ","))
2)步骤二:REMOVEARRAY(步骤一结果, &A1, 1)
3)步骤三:ADD2ARRAY(步骤二结果, IF(INDEXOFARRAY(SPLIT($a, ","), &A1) = 1, -1, 1), &A1)
4)步骤四:JOINARRAY(步骤三结果,",")
步骤如下图所示:
选中 A3 单元格,设置「扩展后排序」,选中「升序」,输入公式为:D3 * INDEXOFARRAY(split($a, ","), &A1)。
INDEXOFARRAY(split($a, ","), &A1) 表示使用 &A1 获取点击的分组的位置,返回用逗号分割的字符串数组中的这个位置的值,即为 1 或 -1。
再用 D3 单元格的值乘以 1 或 -1,按正数升序时,销量列即为「升序」,按负数升序时,销量列即为「降序」。
保存报表,点击「分页预览」,效果与 1.1 节预期效果一致。
App 端和 HTML5 端均支持,效果如下图所示:
已完成模板可参见:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\SpecialSubject\OrderReport\分组内排序互不干扰.cpt
点击下载模板:分组内排序互不干扰.cpt
售前咨询电话
400-811-8890转1
在线技术支持
请前往「服务平台」,选择「在线支持」
热线电话:400-811-8890转2
总裁办24H投诉
热线电话:173-1278-1526
文 档反 馈
鼠标选中内容,快速反馈问题
鼠标选中存在疑惑的内容,即可快速反馈问题,我们将会跟进处理。
不再提示
10s后关闭