本文以参数报表为例,实现预览页通过下拉框切换地区、动态刷新「华北销售额」类标题与明细数据。结构参考帆软 FineReport《参数查询入门示例》,操作以 VeryReport 报表设计器为准。
若尚未熟悉复杂报表基础操作,请先阅读普通报表快速入门。
1. 概述
1.1 预期效果
预览页顶部出现参数面板,含「地区」下拉框;选择不同地区后点击「查询」,报表标题变为「所选地区销售额」,表格仅展示该地区销售员的销量汇总。
1.2 实现思路
参数的核心作用是实现用户与数据的实时交互——按条件过滤数据、驱动动态标题等。本示例思路:
- 定义模版参数「地区」(默认值「华北」);
- 绑定数据集并设计表头、明细与汇总;
- 在参数面板放置下拉框,名称与参数一致;
- 通过数据过滤使扩展单元格仅展示符合参数值的行。
| 概念 | 说明 | VeryReport 入口 |
|---|---|---|
| 模版参数 | 报表级变量,可在表达式、SQL、过滤中引用 | 设计器菜单 设置 → 模版参数 |
| 参数面板 | 预览页顶部的查询控件区(下拉、日期、查询/重置按钮等) | 设计器顶部 Tab 参数面板 |
| 参数引用 | 在公式或标题中引用当前参数值 | 表达式语法 $参数名 或 ${表达式} |
表达式引擎支持$参数名引用模版参数,以及SUM、COUNT等函数与单元格条件过滤语法,详见复杂报表设计文档。
2. 制作步骤
2.1 模板准备
- 新建复杂报表(.vrp),在左侧 数据集 面板创建模板数据集
ds1,SQL 示例:
SELECT * FROM 销量确认字段含「地区、销售员、销量」。
- 点击顶部菜单 设置 → 模版参数,点击 新增参数:
- 参数名:
地区 - 数据类型:字符串
- 默认值:
华北
2.2 设计报表主体
- 合并
A1:C1,插入公式作为动态标题:
$地区 + "销售额"预览时将显示「华北销售额」等,随参数变化。
A2、B2、C2分别输入「地区」「销售员」「销量」。- 将
ds1字段拖入A3、B3、C3。 - 选中
C3,在右侧 单元格属性 → 聚合类型 选择「求和」,对扩展出的销量按分组汇总(与 FineReport「汇总-求和」一致)。
2.3 配置参数面板
切换到设计器顶部 参数面板 Tab,从工具栏拖拽控件到画布:
| 控件 | 本示例用途 |
|---|---|
| 标签 | 显示「地区:」提示文字 |
| 下拉 | 绑定参数「地区」,选项来自 ds1 数据集 |
| 查询 | 点击后按当前参数值重新计算报表 |
| 重置 | 恢复参数默认值(可选) |
- 拖入标签控件,标签名称 设为「地区:」。
- 拖入下拉控件,在右侧 组件设置 中:
- 绑定参数:
地区(必须与模版参数名一致); - 数据字典:选择「数据集」,指定
ds1,实际值与显示值均选「地区」列; - 可选:开启「支持检索」便于选项较多时搜索。
- 拖入查询按钮;可选拖入重置按钮。
- 调整控件位置与大小;保存后参数面板布局随模板一并存储。
提示:参数面板还支持文本、日期、单选/复选、下拉树、密码等控件;默认值可设为「常量」或「表达式」。
2.4 添加数据过滤
需使 A3 扩展出的「地区」列仅显示与参数一致的记录。VeryReport 支持两种方式:
方式一:单元格数据过滤(与 FineReport 一致)
选中绑定「地区」的 A3 单元格,在数据过滤设置中添加条件:
- 数据列:
地区 - 操作符:等于
- 过滤值:参数
$地区
引擎在扩展前按条件过滤数据集行,仅保留匹配参数的数据。
方式二:数据集 SQL 参数(推荐入门)
若更习惯在 SQL 层过滤,可修改 ds1 的 SQL:
SELECT * FROM 销量 WHERE 地区 = '${地区}'点击 SQL 编辑器下方 刷新参数,自动识别 ${地区};参数面板提交的值会在预览时替换进 SQL。模版参数与 SQL 参数同名即可联动。
2.5 样式与预览设置
- 标题行加粗居中;表头行可设浅灰底纹。
- 通过 设置 → 模版预览设置 可配置预览页是否显示工具栏、分页等。
- 参数面板「基础设置」中可勾选「首次预览不计算报表」,用户必须先选条件再点查询(可选)。
3. 效果预览
- 点击 保存,再点击 预览 → 分页预览。
- 顶部参数面板默认显示「华北」,标题为「华北销售额」,表格为该地区数据。
- 切换下拉框为「华东」等,点击 查询,标题与明细同步刷新。
- 确认无误后可 保存并发布,供门户或嵌入场景带参访问。
4. 参数优先级与扩展
| 优先级(高 → 低) | 来源 |
|---|---|
| 运行时 URL/嵌入传参 | 预览链接、开放 API、嵌入 Ticket 的 globalParam |
| 参数面板控件 | 用户点击查询后的当前值 |
| 模版参数默认值 | 设置 → 模版参数中的 defValue |
| 全局参数 | 系统管理中的全局参数(若已配置) |
4.1 下一步
- 增加日期、产品等多参数,组合过滤;
- 下拉框数据字典改用「数据库」直连字典表;
- 在仪表板中配置查询控件,实现跨组件联动过滤;
- 嵌入开放 API 时通过
globalParam注入千人千面参数。
预览报错时,设计器会给出分类提示(参数未定义、表达式错误、数据连接失败等),请检查参数名是否与控件绑定、SQL 占位符是否一致。