Crystal Report抑制无数据子报表所在节失效问题求助
解决Crystal Report中包含空数据子报表的节无法隐藏的问题
我太懂这种明明按步骤操作却没效果的憋屈了——你直接在主报表里统计Table23数据的思路其实踩了个坑:子报表的数据集是完全独立于主报表的,主报表的Count函数根本访问不到子报表里的Table23内容,所以你的判断公式自然失效了。
下面是亲测有效的修正步骤:
给子报表加个数据判断公式
打开你的子报表,新建一个公式字段(比如命名为HasData),输入这段代码:If Count({Table23.Data}) > 0 Then True Else False把这个公式字段放在子报表的任意节里(比如报表页眉),然后右键这个节打开Section Expert,勾选
Suppress——这样公式会默默执行,但不会在报表里显示出来。主报表里引用子报表的判断结果
回到主报表,右键点击要隐藏的目标节,打开Section Expert:- 别只靠
Suppress empty section选项,直接点击Suppress (No Drill-Down)旁边的公式按钮(那个带小x的图标)。 - 在公式编辑器里输入:
记得把Not {你的子报表名称.HasData}你的子报表名称换成你实际的子报表名字,这样主报表就能精准识别子报表是否有数据,进而判断是否隐藏节。
- 别只靠
清理节内的“隐形占位符”
如果节里除了子报表还有其他元素(比如空文本框、线条、默认值为空的控件),哪怕子报表空了,Crystal也会认为这个节不是空的。你要么给这些控件也设置相同的Suppress条件,要么直接删掉没用的占位元素。确保子报表空时彻底无输出
回到子报表的Section Expert,给所有节的Suppress条件都设为:Count({Table23.Data}) = 0这样子报表在没数据的时候,不会输出任何空白内容,避免干扰主报表的节判断。
按这个流程设置完再生成PDF,空数据的子报表对应的节就会乖乖隐藏了。
内容的提问来源于stack exchange,提问作者bircastri
相关产品推荐
相关产品推荐

