zoukankan      html  css  js  c++  java
  • 典型报表设计:项目应收款统计,行分组不汇总、分组内过滤、行记录和汇总计算

    矩表组件是专门用来设计典型的交叉式复杂报表的,可以通过类似透视表的向导,快速实现动态行头、列头的分组交叉报表
    在实际报表软件当中,还会包含各种复杂场景,例如分组过滤、分组间的计算等。

    本教程示例数据:
    每个医院的每个项目有一个对应的负责人,每个项目有一个项目金额,项目会分多次收款和多次开票,存在已收款未开票和已开票未收款的情况。

    需求:
    分别按照签约时间、医院名称、项目、项目负责人、签约单位、开票单位统计项目金额、收款次数、收款金额、开票次数、开票金额,计算未收款、未开票、已开票未收款等数据。
    示例效果为:

    报表特点:
    1.金额是每个项目一条记录,行分组不汇总;
    描述:每个项目的金额是固定的一条记录,不能采用默认的分组汇总方式。

    2.列头按照收款次数和开票次数分组,去除无收款次数和开票次数的记录。
    描述:此类报表中,由于列头或行头都是通过字段值进行分组聚合的,列头的值和数量与字段值的聚合结果是一致的。
    例如,以【收款次数】字段为例,字段值中包含 次数 和空值,聚合之后的列头就会显示为:1,2,3,【0】,在实际报表现实中,【0】即没有
    收款记录的值是不需要显示的。需要在分组内对特定记录进行过滤。

    3.计算各项目未收款和已开票未收款金额。
    描述:
    未收款金额=项目金额-sum(已收款金额)
    已开票金额和已收款金额对比:
    如果 【已开票金额】小于 【已收款金额】,已收款未开票=sum(收款金额)-sum(开票金额)
    如果【已开票金额】大于 【已收款金额】,已开票未收款金额=sum(开票金额)-sum(收款金额)

    实现步骤:
    1.利用示例Excel数据源创建数据源,并选择【项目合同应收款】sheet创建报表数据集。
    2.使用该数据集创建报表
    2.1.选择该共享数据集,选择矩表,根据矩表向导绑定字段;
    行分组绑定:签约时间、医院名称、项目、项目负责人、签约单位、开票单位

         2.2 选中 【收款】列头单元格,右键在下方添加行。

     

    在新增的行和数据行分别绑定收款次数和收款金额,并设置【收款次数】单元格启用列分组。

     

    并在属性面版上设置分组条件:收款次数。

     

    选中【收款次数】单元格,右键 列操作 ,在分组外的右侧添加列,用于计算收款金额合计。

     

    2.3 选中【开票单位】,右键在分组内右侧添加列,绑定【金额】。并将前面几列的列头分别合并居中。

     

    2.4 参考【收款次数】的做法,选中【收款】单元格,在右侧添加列,绑定【开票次数】,【开票金额】,并对【开票次数】启用列分组。

     

    并设置【开票次数分组条件为】开票次数。

     

    2.5 类似上个步骤,选中【开票】单元格,分别在右侧添加列,用于计算和展示:未收款、未开票、已开票未收款和跟踪情况。
    未收款表达式:=Fields!金额.Value-Sum(Fields!收款金额.Value)
    未开票表达式:=IIF(Sum(Fields!收款金额.Value)-Sum(Fields!开票金额.Value)>=0,Sum(Fields!收款金额.Value)-Sum(Fields!开票金额.Value),"")
    已开票未收款表达式:=IIF(Sum(Fields!开票金额.Value)-Sum(Fields!收款金额.Value)>=0,Sum(Fields!开票金额.Value)-Sum(Fields!收款金额.Value),"")

     

    预览效果:

     

    发现收款和开票分组中,出现了没有收款和开票的记录,需要剔除。
    通过在分组中添加过滤条件即可实现。
    分别在【收款次数】和【开票次数】分组中,添加过滤条件:收款次数不等于0和开票次数不等于0。

     

    每个项目多次收款、开票、未收款、未开票等信息均正确显示在报表当中。

  • 相关阅读:
    正则匹配
    curator.zookeeper
    linux tail 命令查看日志 并加上颜色
    k8s一些命令
    k8s文件传递及scp
    Linux下如何在不解压jar包查看或修改配置文件
    MySQL教程之concat以及group_concat的用法
    JavaCV读取流设置超时
    学习html5 canvas 圆环
    jquery使用$.each()
  • 原文地址:https://www.cnblogs.com/edoo/p/13446601.html
Copyright © 2011-2022 走看看