如何解决Crystal Reports同组内共享变量获取错位问题?
解决Crystal报表共享变量组间延迟问题
其实这个问题我之前也踩过坑!核心原因就是Crystal报表打印阶段的求值顺序搞的鬼——你的主报表公式在子报表更新共享变量之前就跑完了,所以拿到的自然是上一组的旧值。
给你几个具体的修复步骤,亲测有效:
调整子报表的放置位置
把子报表从Group 2的页眉/细节区,挪到Group 2的页脚区。Crystal报表的执行顺序是页眉→细节→页脚,子报表放在页脚的话,会先完成执行并更新共享变量,主报表后续读取变量时就能拿到最新值了。修改主报表的读取公式
别再先赋值给本地变量了,直接读取共享变量就行,而且要确保公式的求值时机在子报表之后。把主报表的公式改成这样:WhilePrintingRecords; Shared NumberVar sharedUsedUnits; sharedUsedUnits如果必须把这个公式放在细节区,那一定要保证它在子报表执行之后才求值——最简单的办法就是把子报表放在Group 2的页眉,公式放在细节区(页眉先执行,细节后执行),不过更稳妥的还是放在页脚区和子报表同位置。
重置共享变量(关键!)
在Group 1的页眉区加一个重置公式,避免上一个Group 1的变量残留到下一组:WhilePrintingRecords; Shared NumberVar sharedUsedUnits := 0;
这样调整之后,你再预览报表就能看到每个Group 2对应的数值都正确了——不会再出现第一组显示0,第二组显示前一组值的情况。
内容的提问来源于stack exchange,提问作者isoman4not5
相关产品推荐
相关产品推荐

