报表链接与钻取
说明「报表链接」的两种钻取目标(本模板子报表、另一张报表)、打开方式、参数传递规则,以及层数与循环限制,并以科室钻取示例演示。
概述
「报表链接」用于从汇总数据钻取到明细。点击汇总单元格后,把该行的关键值作为参数传给目标报表,目标报表据此只显示对应明细。
钻取目标有两种:
- 「本模板的子报表」:目标是同一个模板里定义的子报表,不需要另存文件。
- 「另一张报表」:目标是报表管理中的另一个报表文件。
功能入口
设计器 > 选中单元格 > 「单元格属性」面板 > 「链接」页签 > 「添加链接」 > 「报表链接」。
属性说明
| 属性 | 说明 | 取值/默认值 |
|---|---|---|
| 「链接名称」 | 链接在列表和多链接菜单中的名称,必填 | 默认「报表链接」 |
| 「钻取目标」 | 钻取到哪里 | 「另一张报表」/「本模板的子报表」 |
| 「报表文件」 | 目标报表文件,点击「选择文件」选择;选定后可点「预览」「设计」查看目标 | 钻取目标为「另一张报表」时必填 |
| 「子报表」 | 从本模板内的子报表中选择,或点击「新建子报表」 | 钻取目标为「本模板的子报表」时必填 |
| 「浏览方式」 | 目标报表的展示方式 | 默认「分页展示浏览」,另有「全部展示浏览」 |
| 「打开方式」 | 目标报表在哪里显示 | 默认「新窗口」,另有「当前窗口」「新对话框」 |
| 「标题」 | 「当前窗口」「新对话框」的标题,可选「文本」或「表达式」 | 默认「文本」;为空时依次取目标文件名、链接名称,均无则为「明细」 |
| 「尺寸」 | 「打开方式」为「新对话框」时显示 | 默认「自适应内容」,另有「固定」「最大化」 |
| 「最小宽度」/「宽度」 | 对话框宽度;「自适应内容」下为最小宽度,放不下时向外扩展 | 如 800px、90%;默认 800px |
| 「高度」 | 对话框高度,「最大化」时不显示 | 如 600px、70%;默认 600px |
| 「显示查询面板」 | 目标报表是否显示查询表单 | 默认勾选 |
| 「继承报表参数」 | 是否把当前报表查询表单的值一并传给目标报表 | 默认不勾选 |
| 「参数配置」 | 传给目标报表的参数,取值方式见单元格链接概述 | 可为空 |
「尺寸」的三个取值:「自适应内容」把宽度当作下限;「固定」严格按宽高显示;「最大化」打开即全屏。
操作步骤
钻取到另一张报表
- 先把目标报表设计好,并为它声明接收明细条件的参数,例如
deptCode,在目标报表的数据集条件或表达式中使用。 - 在汇总报表中选中要点击的单元格,添加「报表链接」,「钻取目标」选「另一张报表」。
- 点击「选择文件」选定目标报表。
- 点击「读取目标模板参数」,参数表中出现目标报表已声明的参数,为每个参数选择「值」:例如「取本行字段」选
科室代码。 - 选择「打开方式」和「浏览方式」,点击「确定」并保存。
钻取到本模板的子报表
- 添加「报表链接」,「钻取目标」选「本模板的子报表」。
- 点击「新建子报表」,新建后可在设计器底部页签条中进入编辑;已有子报表可在「子报表」下拉框中选择。
- 子报表使用的数据集要带参数,并把参数值绑到单元格;否则每一行钻下去看到的是同一份数据(设计器对话框中有同样提示)。
- 在链接的「参数配置」中给子报表的参数赋值,点击「确定」并保存。
参数如何传递
- 打开目标报表时,先取「继承报表参数」勾选时当前查询表单的值,再叠加链接「参数配置」中的参数;同名时以链接中的参数为准。
- 「新窗口」方式(登录模式下):新标签页打开
/report-view/<目标报表ID>,参数以 JSON 写入 URL 的parameters参数,同时携带search=true,含义见报表预览与查看参数。 - 「当前窗口」「新对话框」:在当前页面内嵌一个目标报表,不使用 iframe,也不改地址栏;「当前窗口」为全屏遮罩层并带返回,「新对话框」为弹窗。
- 通过公开链接或第三方嵌入访问时,「新窗口」也会降级为页内全屏遮罩层,因为新标签页拿不到访问会话。
- 「本模板的子报表」始终以弹窗方式打开。
层数与循环限制
- 最多连续钻取 3 层,超过时提示「最多只能连续钻取 3 层」。
- 目标报表已在当前钻取路径中时,提示「该报表已在当前钻取路径中,不能循环钻取」;子报表钻取的提示为「该子报表已在当前钻取路径中,不能循环钻取」。
示例
系统初始化后自带示例报表「科室钻取示例」,随产品分发(源文件目录为 demo/reports/特性示例),数据集为内置数据集,不依赖外部数据源。
- 在报表管理中按名称找到「科室钻取示例」,点击「预览」。报表按科室汇总显示门诊人次和收入,共内科、外科、儿科、妇产科 4 个科室。
- 在设计器中选中「科室」列的单元格
A4,打开「链接」页签,可以看到名为「科室明细」的「报表链接」。 - 双击该链接查看配置:「钻取目标」为「本模板的子报表」,子报表名为「科室明细」;「打开方式」为「新对话框」,标题「科室就诊明细」,宽
900px、高420px;不勾选「显示查询面板」和「继承报表参数」。 - 参数配置有两行:
dept的值是表达式A4(当前科室名),deptCode的值是表达式$$record.科室代码。 - 在预览页点击「内科」,弹出「科室就诊明细」对话框。首行显示
科室:内科(代码 1001),下方列出该科室的就诊日期、患者、项目、金额(元),末行「小计」为金额合计。子报表的就诊明细数据集以条件「科室代码 等于 参数 deptCode」过滤。 - 关闭后点击其他科室,得到对应科室的明细。
注意事项
注意:参数名要与目标报表中声明的参数一致,否则传过去不生效。
提示:「显示查询面板」不勾选时,目标报表的查询表单隐藏,用户只能看到传入条件对应的明细。