思路如下(Crystal语法):
1:用一个变量mySum来累计页面数据 “订单.订单金额”
公式@CurrentSum,放在详细资料节需要进行汇总的字段的位置
![](https://i-blog.csdnimg.cn/blog_migrate/f0cd6c7f9e7ae96feae062cb48f670f0.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/f0cd6c7f9e7ae96feae062cb48f670f0.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/f0cd6c7f9e7ae96feae062cb48f670f0.gif)
如果不需要显示,抑制显示即可
2: 在每页的页脚获取到这个变量的值(也就是该页最后一个Sum值),当然这个时候后一个mySum是前面所有数据的和,
也就是仍然是我以前犯的错误症状
@CurrentPageSum
![](https://i-blog.csdnimg.cn/blog_migrate/f0cd6c7f9e7ae96feae062cb48f670f0.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/f0cd6c7f9e7ae96feae062cb48f670f0.gif)
3:关键所在,在每页的页眉或者页脚的位置将我们的变量重置@ResetPageSum,保证在每页的开始它都是从0开始累计的
![](https://i-blog.csdnimg.cn/blog_migrate/f0cd6c7f9e7ae96feae062cb48f670f0.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/f0cd6c7f9e7ae96feae062cb48f670f0.gif)
在这里对两个基本概念进行说明
WhilePrintingRecords:
这里的Printing不是指打印机打印的时候,而是水晶报表在获取完数据后将数据显示在报表上的过程
![](https://i-blog.csdnimg.cn/blog_migrate/f0cd6c7f9e7ae96feae062cb48f670f0.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/f0cd6c7f9e7ae96feae062cb48f670f0.gif)
变量的作用域问题 :
在此处则使用的是全局变量(Global)的特性
同一名称的全局变量,在报表(一个报表,不含子报表)中使用同样的内存空间,可以为报表中所有的公式使用
默认情况下,可以省略Global关键字,所以在前面的公式中没有出现这个关键字