本文以行式填报报表为例,讲解如何在 VeryReport 复杂报表中把页面数据写入数据库(增、改、删),并支持填报校验与 Excel 导入。结构参考帆软 FineReport《填报功能入门示例》,操作以报表设计器为准。
范围说明:本文介绍的是复杂报表设计器(.vrp 模板)内的填报控件与填报设置,用于在报表预览页录入并写回数据库。这与菜单「数据应用 → 数据填报」下的独立表单应用不是同一功能;表单模块面向审批流与字段级采集,复杂报表填报则嵌入电子表格版式,适合行式/清单类入库场景。
建议先阅读普通报表快速入门,了解数据集与扩展绑定基础。
1. 概述
1.1 功能简介
复杂报表填报可将预览页中用户填写的内容提交到数据库。设计器在单元格上挂载填报控件,通过「填报设置」建立单元格与表字段的映射;引擎按主键先尝试 UPDATE,未命中则 INSERT(智能提交)。单元格右下角橙色三角表示已配置填报控件。
1.2 预期效果
- 新增:选中某行,点击「添加行」控件,在该行后插入空白行并填写;
- 修改:直接在填报控件中编辑已有数据;
- 删除:选中行后点击「删除行」控件移除该行;
- 提交:点击预览工具栏「提交」,校验通过后写回数据库。
1.3 实现思路
- 模板数据集加载初始数据;
- 数据行单元格绑定填报控件;
- 填报设置映射单元格 ↔ 数据库字段,并指定主键;
- 使用填报预览验证增删改与提交。
2. 制作步骤
2.1 数据准备
- 新建复杂报表,在左侧创建模板数据集
ds1,SQL 示例(取前 5 条产品数据):
SELECT * FROM 产品 ORDER BY 产品ID LIMIT 5请替换为实际业务表名与字段;演示表需含产品 ID、名称、单价、库存等列。
2.2 报表设计
- 在
A1:I1写入表头:产品ID、产品名称、供应商ID、类别ID、单位数量、单价、库存量、订购量、再订购量(按实际字段调整)。 - 将
ds1对应字段拖入A2:I2,默认纵向扩展展示多行。 - 设置表头样式(加粗、居中、边框);数据区保持纵向扩展。
2.3 添加填报控件
需录入入库的单元格必须配置填报控件(仅展示、不需改动的列可不加)。
- 选中
A2:I2中需要填报的单元格(或扩展后的数据区首行各列)。 - 在右侧属性面板切换到 控件设置 Tab。
- 「控件类型」选择 文本控件(数字列可选「数字控件」,日期列选「日期控件」)。
- 可按列分别设置校验规则(见下表)。
| 控件类型 | 用途 |
|---|---|
| 文本 / 文本域 / 数字 | 录入字符串、长文本、数值 |
| 日期 / 下拉 / 单选 / 复选 | 结构化选择与字典项 |
| 添加行 / 删除行 | 行式填报中新增、删除数据行(对应预览页增删记录) |
| 校验类型 | 说明 |
|---|---|
| 非空 | 必填项校验 |
| 邮件 / 手机 / 身份证 / 邮编 | 常用格式校验 |
| 长度限制 / 自定义正则 | 自定义规则与错误提示 |
说明:
- 若只提交用户手工录入、不需加载数据集初始值,可不拖字段,在空白格上直接加控件;
- 若仅展示数据集、不需修改入库,拖入字段即可,无需添加填报控件。
2.4 添加增删行控件(可选)
行式填报通常需要「插入记录 / 删除记录」能力,VeryReport 使用专用控件:
- 在表格外侧或操作列(如
J2)选中单元格,控件类型选 添加行控件;相邻单元格选 删除行控件。 - 预览时点击对应单元格即可在当前行后插入新行,或删除选中行(至少保留一行)。
也可在报表中放置文字链接触发增删,预览引擎识别 fillType="INSERT_LINE" / DEL_LINE 属性。
2.5 设置填报属性(入库映射)
将单元格与数据库表字段对应,确定提交写到哪里:
- 点击菜单 设置 → 填报设置,打开当前 Sheet 的填报配置对话框。
- 点击 添加 新建一条设置,填写名称(如「产品表提交」)。
- 选择数据库(数据中心已配置的数据源)与数据表(如
产品)。 - 在「字段映射」区域点击 智能添加:自动扫描当前 Sheet 中已配置填报控件的单元格(跳过增删行控件)。
- 为每行映射选择数据库字段;「取值类型」选「单元格」并填写地址(如
A2,扩展行会自动跟随)。 - 勾选主键列(如「产品ID」)。主键用于 UPDATE 的 WHERE 条件;修改/删除场景至少需要一个主键,与数据库主键概念不同,相当于 SQL 的 WHERE 条件。
- 点击「确定」保存;填报设置随 .vrp 模板一并存储。
提交逻辑:引擎对每行数据生成 UPDATE;若影响行数为 0 则执行 INSERT,实现 FineReport「智能提交」同类效果。
2.6 预览页设置(可选)
- 菜单 设置 → 模版预览设置,切换到「填报预览」Tab。
- 可配置是否显示工具栏。默认工具栏含:提交、打印、导出、Excel 导入。
- 提交前会自动执行控件校验;未通过时在单元格旁显示错误提示。
3. 效果预览
- 点击 保存。若模板含填报控件,工具栏「预览」默认进入填报预览(也可在下拉中显式选择「填报预览」)。
- 修改:在文本框中直接编辑某行产品信息。
- 新增:选中一行,点击「添加行」控件,填写新行各列后提交。
- 删除:选中行,点击「删除行」控件,再点「提交」写回数据库。
- 点击工具栏 提交,校验通过后提示「提交成功」;失败时查看预览错误面板或消息(如填报 SQL 执行错误 52407)。
4. 扩展能力
| 能力 | 说明 |
|---|---|
| Excel 导入 | 填报预览工具栏支持覆盖/追加导入,批量写入控件 |
| 数据字典 | 下拉/单选等控件可绑定自定义、数据集或数据库字典 |
| 多 Sheet 填报 | 每个 Sheet 可独立配置多条填报设置 |
| 与参数面板组合 | 先按参数过滤再填报,见参数报表入门 |
4.1 下一步
- 为关键列配置非空、格式等校验;
- 结合参数面板实现按条件加载待填数据;
- 需要审批、字段级权限时,使用数据填报快速入门(独立表单模块);
- 阅读复杂报表设计文档了解预览错误分类与填报引擎架构。