VeryReport · 帮助文档

参数报表快速入门

以「地区销售额」为例,完成模版参数、参数面板下拉框、动态标题、数据过滤与预览查询的参数报表设计流程。

本文以参数报表为例,实现预览页通过下拉框切换地区、动态刷新「华北销售额」类标题与明细数据。结构参考帆软 FineReport《参数查询入门示例》,操作以 VeryReport 报表设计器为准。

若尚未熟悉复杂报表基础操作,请先阅读普通报表快速入门

1. 概述

1.1 预期效果

预览页顶部出现参数面板,含「地区」下拉框;选择不同地区后点击「查询」,报表标题变为「所选地区销售额」,表格仅展示该地区销售员的销量汇总。

1.2 实现思路

参数的核心作用是实现用户与数据的实时交互——按条件过滤数据、驱动动态标题等。本示例思路:

  1. 定义模版参数「地区」(默认值「华北」);
  2. 绑定数据集并设计表头、明细与汇总;
  3. 参数面板放置下拉框,名称与参数一致;
  4. 通过数据过滤使扩展单元格仅展示符合参数值的行。
概念说明VeryReport 入口
模版参数报表级变量,可在表达式、SQL、过滤中引用设计器菜单 设置 → 模版参数
参数面板预览页顶部的查询控件区(下拉、日期、查询/重置按钮等)设计器顶部 Tab 参数面板
参数引用在公式或标题中引用当前参数值表达式语法 $参数名${表达式}
表达式引擎支持 $参数名 引用模版参数,以及 SUMCOUNT 等函数与单元格条件过滤语法,详见复杂报表设计文档。

2. 制作步骤

2.1 模板准备

  1. 新建复杂报表(.vrp),在左侧 数据集 面板创建模板数据集 ds1,SQL 示例:
SELECT * FROM 销量

确认字段含「地区、销售员、销量」。

  1. 点击顶部菜单 设置 → 模版参数,点击 新增参数

2.2 设计报表主体

  1. 合并 A1:C1,插入公式作为动态标题:
$地区 + "销售额"

预览时将显示「华北销售额」等,随参数变化。

  1. A2B2C2 分别输入「地区」「销售员」「销量」。
  2. ds1 字段拖入 A3B3C3
  3. 选中 C3,在右侧 单元格属性 → 聚合类型 选择「求和」,对扩展出的销量按分组汇总(与 FineReport「汇总-求和」一致)。

2.3 配置参数面板

切换到设计器顶部 参数面板 Tab,从工具栏拖拽控件到画布:

控件本示例用途
标签显示「地区:」提示文字
下拉绑定参数「地区」,选项来自 ds1 数据集
查询点击后按当前参数值重新计算报表
重置恢复参数默认值(可选)
  1. 拖入标签控件,标签名称 设为「地区:」。
  2. 拖入下拉控件,在右侧 组件设置 中:
  1. 拖入查询按钮;可选拖入重置按钮。
  2. 调整控件位置与大小;保存后参数面板布局随模板一并存储。

提示:参数面板还支持文本、日期、单选/复选、下拉树、密码等控件;默认值可设为「常量」或「表达式」。

2.4 添加数据过滤

需使 A3 扩展出的「地区」列仅显示与参数一致的记录。VeryReport 支持两种方式:

方式一:单元格数据过滤(与 FineReport 一致)

选中绑定「地区」的 A3 单元格,在数据过滤设置中添加条件:

引擎在扩展前按条件过滤数据集行,仅保留匹配参数的数据。

方式二:数据集 SQL 参数(推荐入门)

若更习惯在 SQL 层过滤,可修改 ds1 的 SQL:

SELECT * FROM 销量 WHERE 地区 = '${地区}'

点击 SQL 编辑器下方 刷新参数,自动识别 ${地区};参数面板提交的值会在预览时替换进 SQL。模版参数与 SQL 参数同名即可联动。

2.5 样式与预览设置

  1. 标题行加粗居中;表头行可设浅灰底纹。
  2. 通过 设置 → 模版预览设置 可配置预览页是否显示工具栏、分页等。
  3. 参数面板「基础设置」中可勾选「首次预览不计算报表」,用户必须先选条件再点查询(可选)。

3. 效果预览

  1. 点击 保存,再点击 预览 → 分页预览
  2. 顶部参数面板默认显示「华北」,标题为「华北销售额」,表格为该地区数据。
  3. 切换下拉框为「华东」等,点击 查询,标题与明细同步刷新。
  4. 确认无误后可 保存并发布,供门户或嵌入场景带参访问。

4. 参数优先级与扩展

优先级(高 → 低)来源
运行时 URL/嵌入传参预览链接、开放 API、嵌入 Ticket 的 globalParam
参数面板控件用户点击查询后的当前值
模版参数默认值设置 → 模版参数中的 defValue
全局参数系统管理中的全局参数(若已配置)

4.1 下一步

预览报错时,设计器会给出分类提示(参数未定义、表达式错误、数据连接失败等),请检查参数名是否与控件绑定、SQL 占位符是否一致。
上一篇普通报表快速入门下一篇复杂报表填报快速入门