You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Crystal Report按收银员生成子报表及每日总计问题求助

解决Crystal Report中收银员小计重置及日期总计问题

看起来你现在的核心问题是没搭对分组层级,导致小计变成了跨收银员的累计值。咱们通过调整分组结构+用组汇总字段就能搞定,具体步骤一步步来:


1. 先把分组层级理清楚

首先得给报表设置正确的分组顺序:

  • 第一级分组:OrderDate(日期字段)
  • 第二级分组:Cashier(收银员字段)
    这样每个日期下会单独包含多个收银员组,每个收银员的交易都会被独立归类,小计自然就不会跨收银员/跨日期累计了。

2. 重新创建收银员小计(sub_Total)

别再用累计运行字段算小计了,换成组汇总字段才是正确姿势:

  • 在Crystal Report的字段资源管理器里,右键点「汇总字段」→「新建」
  • 选要汇总的字段:{DTtablesales.Amount}
  • 汇总方式挑「求和」
  • 汇总对象选「Cashier组」(也就是刚才设的第二级分组)
  • 把这个汇总字段拖到Cashier组的页脚区域,这就是每个收银员的正确小计——它会在每个收银员组结束时自动重置计算,不会带着之前收银员的数值累计。

3. 搞定每日总计(Day_Total)

同样用组汇总字段来做每日总计:

  • 再新建一个汇总字段,还是选{DTtablesales.Amount},汇总方式「求和」
  • 这次汇总对象选「OrderDate组」(第一级分组)
  • 把这个字段拖到OrderDate组的页脚区域,每个日期下所有收银员的交易结束后,就会显示该日期的总交易额。

4. 保留GrandTotal的设置

你的GrandTotal是整个报表的总和,继续用原来的设置就行,或者也可以新建一个针对「整个报表」的汇总字段,结果是一样的。


调整后的效果验证

做完这些设置后,报表会自动按「日期→收银员」的层级展示:

  • 每个收银员的交易列表下方,只显示该收银员自己的交易小计
  • 每个日期下所有收银员的交易都展示完后,显示该日期的总计
  • 整个报表末尾的GrandTotal还是所有日期的总交易额,完全符合你期望的效果。

另外别忘了检查下数据源有没有按OrderDate和Cashier排序,这样分组后的记录会更规整,不会出现同一日期/收银员的记录分散的情况。

内容的提问来源于stack exchange,提问作者mantics

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 06:27:35