• 复杂报表设计之动态报表


    需求说明

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

    制作过程:

    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

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

  • 相关阅读:
    2014-12-13 ~ 2015-11-13
    Burnside引理与polya定理
    HDU 5418 Victor and World (状态压缩dp)
    HDU 5446 Unknown Treasure(lucas + 中国剩余定理 + 模拟乘法)
    HDU 5412 CRB and Queries (整体二分)
    LA 4327 Parade(单调队列优化dp)
    win7远控控制桌面防火墙设置到例外
    win7远控控制桌面
    TCP的三次握手和四次挥手
    ES6 for in与for of 的使用方法及其区别
  • 原文地址:https://www.cnblogs.com/shiGuangShiYi/p/12078318.html
Copyright © 2020-2023  润新知