Crystal Reports子报表:基于外部TaskName字段隐藏指定行的技术问询
Crystal Reports子报表基于外部字段隐藏对应行的解决方案
操作步骤:
给子报表创建接收参数
- 打开子报表,创建一个字符串类型的参数,命名为
@ParentTaskName(名称可自定义,便于识别)
- 打开子报表,创建一个字符串类型的参数,命名为
建立主报表与子报表的字段链接
- 返回主报表,右键点击子报表控件,选择「更改子报表链接」
- 在链接设置窗口中,将主报表的
TaskName字段与子报表的@ParentTaskName参数关联,确保主报表的字段值能传递到子报表
设置详细行的抑制显示公式
- 在子报表中,找到显示Task和User数据的「详细节(Details Section)」
- 右键点击详细节空白处,选择「格式化节」
- 在弹出的窗口里,找到「抑制显示(Suppress)」选项,点击右侧的公式编辑器按钮(fx图标)
- 在公式编辑器中输入以下逻辑(替换成你实际的字段名):
示例(假设子报表Task字段是// 截取Task字段前缀与传递的参数匹配时,隐藏该行 Left({你的子报表Task字段名}, Length({@ParentTaskName})) = {@ParentTaskName}{TaskList.Task}):Left({TaskList.Task}, Length({@ParentTaskName})) = {@ParentTaskName}
验证效果
- 预览主报表,分别设置
TaskName为「Containment」或「Disposition」,检查子报表是否正确隐藏对应行
- 预览主报表,分别设置
额外注意事项:
- 若存在大小写不一致的情况,可统一转换为大写/小写避免匹配失败,公式示例:
UCase(Left({TaskList.Task}, Length({@ParentTaskName}))) = UCase({@ParentTaskName}) - 确保子报表的详细节没有其他冲突的抑制显示条件
内容的提问来源于stack exchange,提问作者DL Pavani
相关产品推荐
相关产品推荐

