Crystal Reports:根据最后一条评估记录KPI设置页眉框背景色
多层钻取报表页眉背景色设置方案
核心结论
需要创建公式,不适合直接用OnLastRecord(它指向整个报表的最后一条,而非当前分组的最新记录),应该用组级变量捕获当前assessments分组的最新KPI值,再用公式映射颜色。
具体步骤
1. 先确保分组排序正确
给assessments分组设置排序规则:按「评估日期」降序排列。这样每个分组里的第一条记录就是最新提交的评估记录,后续只需捕获这条的KPI即可。
2. 创建公式存储最新KPI
新建公式字段(命名为@StoreLatestKPI),将其放在assessments分组的细节节最前端:
WhilePrintingRecords; Shared StringVar LatestKPI; // 仅在分组的第一条记录时更新变量 If OnFirstRecord In Group Then LatestKPI := {assessments.KPI}; // 替换为你实际的KPI字段名
3. 创建页眉背景色映射公式
再新建公式字段(命名为@HeaderBoxColor),用于返回对应颜色:
WhilePrintingRecords; Shared StringVar LatestKPI; Select LatestKPI Case "R": crRed Case "Y": crYellow Case "G": crGreen Default: crWhite; // 无匹配值时的默认背景色
4. 绑定颜色到页眉框
右键选中页眉需要变色的框 → 选择「格式化对象」→ 切换到「边框」标签页 → 点击「背景色」右侧的公式按钮 → 选择@HeaderBoxColor公式即可。
为什么OnLastRecord没用?
OnLastRecord的作用范围是整个报表,只会指向报表最后一条记录的KPI,而你的多层分组场景下,每个assessments分组都有独立的最新记录,所以无法用它精准匹配当前分组的最新数据。
内容的提问来源于stack exchange,提问作者Russell
相关产品推荐
相关产品推荐

