码迷,mamicode.com
首页 > 其他好文 > 详细

复杂报表设计之动态报表

时间:2019-12-21 22:50:52      阅读:92      评论:0      收藏:0      [点我收藏+]

标签:nec   函数   过程   不同的   查询   需求   供应商   定义   变量   

需求说明

技术图片

技术图片

如上图所示,可以需选择不同的分组维度进行数据分析,例如类别、供应商维度;
可以通过用户输入的参数值进行数据动态过滤,例如传入不同供应商、类别的值进行数据查询过滤;
可以选择要显示的附加字段数据;
同时要求显示有排名(每个分组内的数据从大到小显示)、占比(产品占该分组维度总订购量的百分比)。

制作过程:

1. 数据准备

此示例使用脚本数据集完成数据的准备工作,此处使用脚本数据集是处于对组内排名需求的考虑,完整脚本配置如下图所示:

 技术图片

其中,
A1:使用 connect 函数连接 demo 数据源
A2:使用 query 函数进行数据的过滤查询
A3:使用 group 和 sort 函数实现组内排序效果,即排名结果

2. 主报表制作

技术图片

其中,
A2:=if(arg1==“供应商 ID”,ds1.group( 供应商 ID:1),ds1.group(类别 ID:1)) 实现动态分组效果
B2:=ds1.sum(订购量) B 列为隐藏列,用于占比的分母值计算
C2:=&D2 排名效果实现,此处使用组内序号的配置即可,数据集准备的数据中已完成排名计算
D2:=ds1.select(产品 ID) 明细数据的展现,跟随 A2 不同的分组维度显示产品明细
E2:=ds1. 订购量 同一个数据集的 select 函数后面跟随取值表达式,不需要再使用 select 函数取数
F2:=if(B2==0,“-”,E2/B2) 占比的实现是除法,准备好分子和分母的数据即可,此处使用 if 对分母为 0 的数据做了特殊处理,显示为“-”
G1:=split(arg4,“,”) 对传入要附件显示的列名进行拆分,需要设置 G1 单元格的扩展方式为横向扩展
G2:=ds1.field(G1) 使用 field 函数对该字段进行取数显示

主表设计完成,保存报表,例如保存名称为:kehu1.rpx,我们可以通过设计器的预览按钮看下效果:

技术图片

输入参数值后,得到如下结果:

技术图片

3. 参数模板设计

技术图片

文件–新建报表,设置报表属性中的报表类型为:参数模板
绘制上图所示的表样
其中,
B2:编辑风格为下拉列表,并设置 web 变量名为 arg1

技术图片

D2:编辑风格为下拉数据集,并设置 web 变量名为 arg2

技术图片

此 ds1 数据集需在参数模板的 报表–数据集中进行定义

F2:编辑风格为下拉数据集,并设置 web 变量名为 arg3
B3:编辑风格为下拉列表,并设置 web 变量名为 arg4

最后,将参数模板保存为主表名称 _arg.rpx,此示例名称为 kehu1_arg.rpx

至此,整体效果已完成设置。

复杂报表设计之动态报表

标签:nec   函数   过程   不同的   查询   需求   供应商   定义   变量   

原文地址:https://www.cnblogs.com/shiGuangShiYi/p/12078318.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!