原报表样式如下:
![](https://img-blog.csdnimg.cn/20210126113011247.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3N6dzkwNjY4OTc3MQ==,size_16,color_FFFFFF,t_70)
我们希望根据做小计和合计功能,希望实现的报表结果如下:
![](https://img-blog.csdnimg.cn/20210126144231898.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3N6dzkwNjY4OTc3MQ==,size_16,color_FFFFFF,t_70)
第一步:
先按要求设计如下报表:
![](https://img-blog.csdnimg.cn/20210126144522937.png)
此处主要说明三个sum(C1)的配置,基础配置不在复述,如果基础配置有问题,请查阅资料 https://www.w3cschool.cn/ureport/
第一个sum(C1)配置
![](https://img-blog.csdnimg.cn/20210126145028241.png)
根据表格展示结果,我们可以看出,第一个sum(C1)我们是希望根据B1的展示结果不同做不同小计统计,根据Ureport的计算模型,对于父格而言,父格展开时会带动子格一起展开,如父格向下展开,则带其下所有子格及子格的子格一起向下展开。所以我们如果希望B1向下展开是也能带动C2向下拓展,那么必须保证B1是C2的父格。如果B1设置为C2的上父格,那么C1与C2不存在任何关系,此时将会在统计C1下所有值的累计,显然不满足,所以只能讲B1设置为C2的左父格。如图所示
![](https://img-blog.csdnimg.cn/2021012615264792.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3N6dzkwNjY4OTc3MQ==,size_16,color_FFFFFF,t_70)
此时预览效果如下:
![](https://img-blog.csdnimg.cn/20210126152752689.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3N6dzkwNjY4OTc3MQ==,size_16,color_FFFFFF,t_70)
会发现小计只计算C1第一行的值这是因为C1是C2的上父格,根据Ureport2计算模型,只会累加第一行的值。为了统计C1所有行的值,只有保证C1与C2不具有关系即可。一般将C2的上父格设置为无。
![](https://img-blog.csdnimg.cn/20210126153101754.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3N6dzkwNjY4OTc3MQ==,size_16,color_FFFFFF,t_70)
此时预览效果如下:
![](https://img-blog.csdnimg.cn/20210126153323835.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3N6dzkwNjY4OTc3MQ==,size_16,color_FFFFFF,t_70)
会发现基本满足要求,但是小计没有在每一列B1里展示。这时只要对小计对应的格子,也就是B2设置跟C2一样的左父格和上父格即可。
![](https://img-blog.csdnimg.cn/20210126154737615.png)
预览效果如下:
![](https://img-blog.csdnimg.cn/20210126153600886.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3N6dzkwNjY4OTc3MQ==,size_16,color_FFFFFF,t_70)
总结:
对于Ureport的小计或者合计统计,首先判断表格是希望根据哪个格子做分组小计或者合计统计(上例B1),然后将填写表达式的格子(上例C2)的左父格设置为对应希望做分组统计的格子,上父格设置为无(如果希望分组小计的格子(B1)的数据展开方向是向右展开则相反,比如上例的数据方向是向下展开,所以是上父格设置为无,左父格设置为B1,如果数据方向是向右,则上父格设置为B1,左父格设置为无)。并且注意其他所在行的格子也要设置为与填写表达式的格子相同的左父格和上父格(上例B2)
第二个sum(C1)配置
![](https://img-blog.csdnimg.cn/20210126155025444.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3N6dzkwNjY4OTc3MQ==,size_16,color_FFFFFF,t_70)
根据表格样式,很容易看出根据A1做分组合计,根据上面总结,很容易得到对于C3的父格配置,如下图所示:
![](https://img-blog.csdnimg.cn/20210126155233710.png)
记住对于A3也要相同的配置
![](https://img-blog.csdnimg.cn/20210126155315533.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3N6dzkwNjY4OTc3MQ==,size_16,color_FFFFFF,t_70)
预览效果如下:
![](https://img-blog.csdnimg.cn/20210126155412826.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3N6dzkwNjY4OTc3MQ==,size_16,color_FFFFFF,t_70)
第三个sum(C1)配置
![](https://img-blog.csdnimg.cn/20210126155545188.png)
根据表格样式很容易得到总计是对于整个报表的统计,此处它不存在是对于那个格子的分组合计问题。根据上面的总结,我们可以得到配置为:
![](https://img-blog.csdnimg.cn/20210126155856869.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3N6dzkwNjY4OTc3MQ==,size_16,color_FFFFFF,t_70)
最终展示结果为:
![](https://img-blog.csdnimg.cn/20210126155943908.png)
具有共同上父格的求和问题
![](https://img-blog.csdnimg.cn/20210126180224239.png)
如图所示,A2的上父格是A1,A2处欲获取A1所有值求和。
![](https://img-blog.csdnimg.cn/20210126180438349.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3N6dzkwNjY4OTc3MQ==,size_16,color_FFFFFF,t_70)
![](https://img-blog.csdnimg.cn/20210126180517336.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3N6dzkwNjY4OTc3MQ==,size_16,color_FFFFFF,t_70)
总结:
如果具有上父子格关系的汇总,只需要设置子格的父格均为无即可(上例中A2的设置)。
经典例子
交叉表的合计运算:
![](https://img-blog.csdnimg.cn/20210126183541474.png)
![](https://img-blog.csdnimg.cn/2021012618362866.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3N6dzkwNjY4OTc3MQ==,size_16,color_FFFFFF,t_70)
![](https://img-blog.csdnimg.cn/20210126183711523.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3N6dzkwNjY4OTc3MQ==,size_16,color_FFFFFF,t_70)
![](https://img-blog.csdnimg.cn/20210126183804842.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3N6dzkwNjY4OTc3MQ==,size_16,color_FFFFFF,t_70)
展示效果为:
![](https://img-blog.csdnimg.cn/20210126183923712.png)
![](https://img-blog.csdnimg.cn/20210126183952200.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3N6dzkwNjY4OTc3MQ==,size_16,color_FFFFFF,t_70)
交叉表例子中C3还有其他设置方法:
方法1:
![](https://img-blog.csdnimg.cn/20210126184208581.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3N6dzkwNjY4OTc3MQ==,size_16,color_FFFFFF,t_70)
![](https://img-blog.csdnimg.cn/20210126184144987.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3N6dzkwNjY4OTc3MQ==,size_16,color_FFFFFF,t_70)
方法2:
![](https://img-blog.csdnimg.cn/20210126184302642.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3N6dzkwNjY4OTc3MQ==,size_16,color_FFFFFF,t_70)
![](https://img-blog.csdnimg.cn/20210126184329267.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3N6dzkwNjY4OTc3MQ==,size_16,color_FFFFFF,t_70)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)