Crystal Reports:如何排除未抑制字段值不纳入运行总计?
在Crystal Reports中排除指定字段值不计入运行总计的实现方法
我之前刚好处理过一模一样的需求,不用抑制字段就能让特定值不参与求和总计,给你两个实用的方案:
方案一:修改运行总计的评估条件(推荐)
这是最贴合Crystal Reports原生功能的做法,操作起来也很直观:
- 打开已有的运行总计字段(如果还没创建,右键点击“运行总计字段”选择“新建”)
- 在弹出的运行总计设置窗口里,找到评估区域,选择「使用公式」选项,然后点击旁边的公式编辑器按钮
- 在公式编辑器中输入判断条件,比如你要排除
{Orders.Amount}等于0的记录,就写:
如果要排除多个值(比如0和-1),可以用:{Orders.Amount} <> 0
要是排除的是文本值(比如“无效”),记得加引号:{Orders.Amount} NOT IN [0, -1]{Orders.Status} <> "无效" - 保存公式后,运行总计就只会在满足条件时累加数值,而原字段依然会正常显示所有值,完全不影响展示。
方案二:自定义求和公式字段
如果你的报表结构比较复杂,或者需要更灵活的逻辑,可以用自定义公式来实现:
- 右键点击「公式字段」选择「新建」,给公式起个好记的名字(比如
Valid_Total) - 在公式编辑器里写条件求和逻辑,还是以排除0为例:
Sum(If {Orders.Amount} <> 0 Then {Orders.Amount} Else 0) - 把这个公式字段拖到报表的合适位置(比如组脚注或报表页脚),它会自动计算所有符合条件的数值总和,原字段的显示不受任何影响。
额外注意事项
- 如果要排除NULL值,记得在条件里加上
AND Not IsNull({Table.Field}),避免空值导致的计算异常 - 要是涉及分组求和,方案一的运行总计可以直接关联分组字段,方案二则需要在
Sum函数里指定分组范围,比如Sum(..., {Orders.Group_ID})
内容的提问来源于stack exchange,提问作者Kiran
相关产品推荐
相关产品推荐

