VeryReport · 帮助文档

参数报表

参数报表入门:参数查询概念、实现步骤、数据集参数 ${} 写法,以及以「地区」下拉筛选销量为例的完整配置流程。操作以 VeryReport 复杂报表设计器为准。

VeryReport 复杂报表设计器 中,参数用于在运行时传入不同取值,动态过滤数据,实现用户与报表的实时交互。本文介绍参数报表的概念、配置流程,并以数据集参数完成「按地区查询销量」示例。

相关文档:参数报表快速入门 · 普通报表快速入门 · 行式报表 · 帮助文档首页 · 产品介绍:复杂报表

VeryReport 参数面板:下拉选择条件后查询报表

1. 概述

1.1 适用版本

报表设计器版本
since 3.0

1.2 应用场景

参数指在报表运行时赋不同取值、从而得到不同查询结果的变量。VeryReport 引入参数后,可以按条件动态过滤数据,常见能力包括:

数据集参数在取数阶段完成过滤示意

1.3 功能简介

按作用范围,参数通常可分为:

同名参数存在时,一般遵循优先级:数据集参数 > 模版参数 > 全局参数;赋值方式上常见为:参数控件 > URL 传参 > 默认值

设计器路径一般为 /report/designer,菜单入口为 数据应用 → 报表。可切换顶部 Tab 参数面板 布局控件;菜单 设置 → 模版参数 管理模版参数。

2. 实现参数查询步骤

实现参数查询的一般流程如下:

参数查询三步:定义参数、添加控件、设置面板样式
  1. 定义参数:确定参数名称与默认值。数据集参数在 SQL 中用 ${para} 声明;模版参数在「模版参数」对话框中新增。
  2. 参数添加控件:控件是参数交互载体。将控件名称与参数名保持一致即可完成绑定,预览时在控件中输入/选择的值会作为参数值参与查询。
  3. 设置参数面板样式:调整控件位置、对齐、标签文案、查询/重置按钮布局与面板背景,保证查询区清晰易用。

3. 数据集参数使用说明

定义模板数据集(数据库查询)时,在 SQL 中加入 ${para} 宏即可声明数据集参数。${} 的求值结果会拼接到 SQL 上,再交给数据库执行;一条 SQL 中可写多个 ${},对应多个参数。

${} 内可使用设计器支持的公式(如 iflen)以及字符串拼接;其中未作为函数名或常量出现的变量名,即为数据集参数。

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

上例中的数据集参数为 area。写好 SQL 后,在数据集对话框点击 刷新参数,下方参数列表出现 area,即为定义成功;填写默认值后可再点 预览 验证取数。

注:尽量避免在 ${} 内直接嵌套裸的 { / },以免解析失败。数据集参数不与某一个数据集「独占绑定」——多个数据集中的同名参数视为同一参数,以后一次赋值为准。

3.1 简单应用

按地区过滤:

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

多选(结合 IN)时,注意与数据库语法对齐,例如:

SELECT * FROM 销量 WHERE 地区 IN ('${area}')

若目标 SQL 为 IN ('华东','华北'),则参数值应输入为 华东','华北,再与两侧引号拼接成合法语句。

3.2 带公式的应用

参数为空时查全部,非空时按地区过滤:

SELECT * FROM 订单 WHERE 1=1 ${if(len(area) == 0,"","and 货主地区 = '" + area + "'")}

3.3 定义多个参数

SELECT * FROM 订单 WHERE 1=1
${if(len(area) == 0,"","and 货主地区 = '" + area + "'")}
${if(len(province) == 0,"","and 货主省份 = '" + province + "'")}

上例定义了 areaprovince 两个数据集参数。

3.4 嵌套应用

SELECT * FROM 销量 WHERE 1=1 ${if(len(area)!=0," and 地区='"+area+"'",if(len(product)== 0,""," and 产品='"+product+"'"))}

优先按地区过滤;地区为空时再按产品过滤;两者皆空则返回全量(在 WHERE 1=1 下)。

4. 示例:按地区查询销量

以下以「销量」明细为例,使用数据集参数 area + 参数面板下拉框,实现按地区查询。

4.1 定义数据集参数

  1. 进入 数据应用 → 报表,新建或打开普通报表模板。
  2. 左侧 数据集模板数据集+ 新建数据库查询
  3. 命名为 ds1,选择数据源,SQL 填写:
SELECT * FROM 销量 WHERE 地区='${area}'
  1. 点击 刷新参数,在参数列表中看到 area,将默认值设为 华东
  2. 点击 预览 确认能取出华东数据,再点确定保存数据集。
VeryReport 复杂报表设计器:创建带参数的数据库查询数据集

4.2 表格样式设计

  1. 合并标题区(如 A1:C1),输入「地区销售查询」或使用动态标题 $area + "销售明细"(若同时配置了同名模版参数,也可引用模版参数)。
  2. A2B2C2 分别作表头:地区、销售员、销量。
  3. ds1 字段拖入 A3B3C3;明细行一般保持纵向扩展
  4. 选中销量格 C3,右侧属性将聚合类型设为求和(按扩展分组汇总)。
  5. 如存在分组或交叉场景,请正确设置左主格 / 上主格(主子格关系),保证扩展后单元格坐标唯一、汇总不错位。
提示:仅做「参数过滤后的清单」时,保证纵向扩展与对齐即可;若扩展后汇总错位,优先检查主子格是否指向正确的主格。

4.3 参数添加控件

  1. 点击设计器顶部 Tab 参数面板,进入参数面板编辑。
  2. 从控件栏拖入:标签下拉框查询按钮(可选重置按钮)。
  3. 将下拉框的控件名称设为 area(与数据集参数同名),即完成参数绑定。
  4. 标签文案设为「地区:」。
  5. 为下拉框配置数据字典(数据库表「销量」的「地区」字段,实际值与显示值均为地区)。
注意:使用数据集参数时,下拉框的数据字典不要直接引用会随同一参数循环依赖的 ds1(否则可能造成循环引用)。应使用独立字典数据集,或未带该过滤参数的库表/全局数据集。
参数面板:地区下拉框与查询按钮布局

4.4 效果预览

4.4.1 PC 端

保存模板后点击 分页预览

参数报表预览与发布示意

4.4.2 移动端

使用手机浏览器或企业门户打开同一预览链接。参数面板在小屏上通常置于报表上方;选择条件后点查询即可。列较多时可左右滑动查看。

5. 索引与进阶

序号主题说明
1参数命名建议使用字母、数字、下划线;与控件名、SQL 宏名保持一致
2参数分类数据集参数 / 模版参数 / 全局参数
3参数面板标签、下拉、日期、查询、重置等控件布局
4模版参数过滤全量取数后再按条件过滤(适合数据量不大的场景)
5主子格扩展与汇总时配置左主格、上主格,避免错位
6超链传参钻取、联动时把当前行参数写入目标报表

6. 常见问题

Q:刷新参数后看不到参数?
A:检查 SQL 中是否使用 ${参数名} 写法;宏是否写在字符串引号场景中但仍可被解析;点击「刷新参数」后再看列表。

Q:预览查询无数据?
A:确认控件名与参数名一致;默认值是否与库中实际地区文案完全一致(含空格);SQL 字符串引号是否配对。

Q:下拉框选项为空或报错?
A:数据字典不要循环引用带同一参数的 ds1;换用独立查询或源表字段。

Q:数据集参数和模版参数怎么选?
A:数据量大、条件稳定 → 优先数据集参数(库侧过滤);需要在标题、单元格公式、多数据集共用同一条件且数据量可控 → 可用模版参数 + 过滤。

Q:汇总行数字不对?
A:检查扩展方向、聚合类型,以及主子格(左主格 / 上主格)是否指向正确主格。

7. 相关文档

上一篇单元格显示图片下一篇仪表板概述