文档首页 / 参数类型、默认值与传参

参数类型、默认值与传参

说明报表参数的定义方式、六种参数类型、默认值模式、参数值的各种来源与合并规则,以及集合参数的写法和在 SQL 中的展开行为。

概述

报表参数是报表运行时的输入变量。参数独立于查询表单存在:查询表单只是其中一种输入方式,没有绑定控件的参数照样可以被 SQL、表达式和数据集过滤条件引用。运行时,服务端把各来源传入的参数值与报表里定义的参数逐个合并,得到最终生效的参数值。

本文说明参数的定义、类型、默认值和来源。参数在 SQL 与表达式里的引用写法,见 SQL 参数与动态语法 与 数据集。

功能入口

设计器顶栏左侧「查询参数设置」,打开「报表参数配置」对话框。对话框顶部有「添加参数」按钮和「共 N 个参数」计数,参数以表格形式编辑。

操作步骤

  1. 点击「添加参数」新增一行。
  2. 在「参数名称」列填写名称。名称不能为空,也不能与其他参数重名。
  3. 在「参数类型」列选择类型;类型为「集合」时,同一格内多出一个元素类型下拉。
  4. 在「默认值模式」列选择默认值的给法,在「默认值」列填写默认值。
  5. 在「备注说明」列填写说明,点「确定」保存。

属性说明

参数类型

界面名称 类型 说明 传值示例
字符串 String 文本 "技术部"
数值 Number 数字,内部按十进制数处理 100
布尔值 Boolean 真假 true
日期 Date 日期 "2026-07-01"
日期时间 DateTime 日期加时间 "2026-07-01 08:30:00"
集合 List 一组值,用于多选和 IN 条件 ["内科","外科"]

日期与日期时间参数接收字符串,系统自动识别常见日期格式,无法识别时得到空值。建议按 yyyy-MM-dd、yyyy-MM-dd HH:mm:ss 传值。

元素类型

类型为「集合」时可设置元素类型:

取值 含义
文本元素 每个元素按文本绑定,默认值
数值元素 每个元素转为数值;有元素无法转为数值时,出数会报错并指出是第几项,而不是静默查不到数据

编码类的值(如 001)应使用文本元素,数值元素会把 001 变成 1。

默认值模式

模式 说明 适用类型
固定值 直接填写默认值 全部
表达式 默认值由表达式在每次出数时计算,如 monthStart(now(), 'yyyy-MM-dd')(本月第一天)、userAccount()(当前用户账号) 全部
日期预设 从预设列表选择 仅日期、日期时间

日期预设列表:

预设 含义 备注
当天 当天 0 点
当天开始、当天结束 当天 0 点、当天 23:59:59 仅日期时间
当前时间 出数时的时刻 仅日期时间
本月月初、本月月末 当月第一天、最后一天
上个月初、上个月末 上月第一天、最后一天
本季度初、本季度末 当前季度第一天、最后一天
上季度初、上季度末 上一季度第一天、最后一天
本年年初、本年年末 当年 1 月 1 日、12 月 31 日
上年年初、上年年末 上年 1 月 1 日、12 月 31 日

参数值的来源与合并

来源 说明
查询表单 使用者在控件里填写,点击「查询」时提交
URL 参数 地址栏的 parameters,只在首次取数时使用,见 报表预览
预览「参数调试」抽屉 设计器预览时为任意参数临时赋值,见 报表预览
单元格链接 「报表链接」「更改查询参数」传入的参数,见 单元格链接与钻取
宿主页面 报表被嵌入第三方页面时,宿主通过消息通道调用 setParameters,见 报表集成

服务端按报表里定义的参数逐个合并:

  1. 传入了该参数的值(值不为 null):使用传入值;
  2. 没传值:使用默认值(固定值、表达式或日期预设的计算结果);
  3. 传入值按参数类型转换。

由此得到两条规则:

  • 报表里没有定义的参数名,即使传入也会被丢弃,不报错、无日志。参数名必须与「报表参数配置」里的「参数名称」完全一致。
  • 「重置」按钮清空的控件没有传值,服务端按默认值补齐;数组值以空数组提交,不回到默认值。

集合参数

集合参数用于「多选」「IN 条件」。

输入写法

在「默认值」、预览「参数调试」抽屉等文本输入处,集合参数按以下规则解析:

  • 用半角逗号 ,、全角逗号 , 或顿号 、 分隔,逐项去除首尾空白并忽略空项,1,2、3 得到三项;
  • 也可以写 JSON 数组,如 ["A","B"];
  • 空文本得到空集合。

多选下拉绑定集合参数时提交数组;绑定字符串参数时提交逗号分隔的字符串。

在 SQL 中使用

SELECT * FROM demo_客户
WHERE 所在大区 IN (${$regions})

IN 里只写一个集合参数占位符,运行时按元素个数展开为对应个数的占位符:

集合内容 效果
1 个元素 一个占位符
多个元素 展开为等量的占位符
空集合 替换为 NULL,IN (NULL) 不匹配任何行,不报错

字符串常量里的 ? 不算占位符。存储过程不做展开,多值集合传给存储过程会明确报错。

示例

为客户明细报表增加「多选大区」条件,并设置一个动态日期默认值。

  1. 「报表参数配置」中添加参数:regions,类型「集合」,元素类型「文本元素」,默认值填 华东,华北(全角逗号也可以);asOf,类型「日期」,默认值模式「日期预设」,选「本月月初」。
  2. 数据集 SQL:
SELECT 客户名称, 所在大区, 注册日期
FROM demo_客户
WHERE 所在大区 IN (${$regions})
  AND 注册日期 >= ${$asOf}
  1. 「查询表单设计」中添加「多选下拉」绑定 regions,选项类型「直连SQL字典」,SQL 为 SELECT DISTINCT 大区 AS label, 大区 AS value FROM demo_地区;添加「日期框」绑定 asOf;添加「查询按钮」。
  2. 预览:首次打开按默认值 华东、华北 和本月月初出数;取消一个大区再点「查询」,IN 条件随之减少一项。
  3. 点「重置」并查询:asOf 按预设日期补齐,regions 以空集合提交,结果为空。

注意事项

注意:${$参数名} 与裸写的 $参数名 在数据集 SQL 中都表示参数引用,值以预编译占位符绑定,不会拼入 SQL 文本。${参数名}(没有内层 $)是未定义的变量,会求值为空。

注意:控件绑定的参数类型必须兼容,见 查询表单控件。

提示:日期预设只对日期、日期时间类型有效;其他类型选择表达式模式,用表达式函数计算默认值。

相关文档

联系我们

请填写您的信息,我们将在 1 个工作日内与您联系。