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。

     

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

  • 相关阅读:
    HDU 2888 Check Corners (模板题)【二维RMQ】
    POJ 3264 Balanced Lineup(模板题)【RMQ】
    poj 3368 Frequent values(经典)【RMQ】
    SPOJ RPLN (模板题)(ST算法)【RMQ】
    UVA 796 Critical Links(模板题)(无向图求桥)
    UVA 315 Network (模板题)(无向图求割点)
    POJ 2029 Get Many Persimmon Trees (模板题)【二维树状数组】
    poj 3067 Japan 【树状数组】
    POJ 2481 Cows 【树状数组】
    POJ 1195 Mobile phones【二维树状数组】
  • 原文地址:https://www.cnblogs.com/edoo/p/13446601.html
Copyright © 2011-2022 走看看