finereport实现数据替换和重复填报提示

问题

在用finereport做企业web报表时遇到了一个问题,数据填报后无法修改,finereport只提供了填报功能而没有提供修改功能,难道填报数据出错每次都从数据库中删除出错数据吗?这显然不符合规矩

实现数据替换

可不可以在填报是实现对原有数据的更改呢?这样业务人员可以在出错后通过二次填报来替换出错数据。
本来想设置触发器来实现数据的替换,然而在软件上我发现了更为简单的方法,在模板填报属性里我们可是设置主键
在这里插入图片描述 例如这张表我主键为组织机构、年份、月份,这样填报时当业务人员选择这三个数据相同时,提交会覆盖原有数据,这样便可实现简易的修改功能。

重复填报提示

前面实现了数据的替换,但业务人员下次填报时可能忘记之前的填报数据,或者选择出错而导致正确的数据被覆盖,如何在填报时提示业务人员提交的数据中含有重复填报的数据,让其选择是否覆盖提交?

一、数据库数据获取

要检查是否有重复数据,当然需要获取数据库原有数据,可在finereport新建数据查询来获取数据库中已有的数据。
我们只需要比较确认该数据唯一性的属性就好了,这里我们需要用到多字段拼接,orcel的字段拼接SQL语句为为

select "组织机构"||"年份"||"月份" as AA from 利润指标情况表

我们拼接组织机构、年份、月份这个联合主键

二、获取填报字段

插入公式CONCATENATE(),该公式用于将多个单元格内容拼接在一起

CONCATENATE(A4, B4,C4)
//A4,B4,C4分别对应填报表中组织机构、年份、月份的单元格

三、校验

第三步将数据库中获取的数据与从填报端获取的数据对比,如果相同则表示填报存在重复的数据,使用公式INARRAY()可以实现
在这里插入图片描述
公式表示将I4单元格与获取字段aa对比,存在相同则提示0
官方文档提供的公式在数据库为空时会获取空值,这时该公式会报错,建议使用find()函数避免此类错误。

四、JS交互

通过JS代码来实现业务人员选择是否将该数据提交
在模板web属性中添加事件,设置为校验后
在这里插入图片描述

JS代码:

if (fr_verifyinfo.success) {
	alert("校验成功");
} else {
	if (fr_verifyinfo.info == "I4:0") {
		FR.Msg.confirm("警告", "数据重复填报,确认要提交吗?", function(result) {
			if (result) {
				_g().writeReport();
				//强制提交
				location.reload();
				//刷新页面
	                                   } 
					                     })
		return false;
	                                        }
                                              }

效果演示
选择确定便会提交数据,取消不做操作
在这里插入图片描述
参考文档:finereport官方帮助文档

### FineReport 实现填报功能的方法教程 FineReport 是一款强大的报表工具,其填报功能允许用户通过简单的操作完成数据录入、修改以及提交的任务。以下是关于如何利用 FineReport 实现填报功能的具体方法: #### 一、页面绘制与绑定 在实现填报功能之前,需要先设计好页面布局,并将页面中的控件与数据库字段进行绑定。这一步骤可以通过拖拽控件到画布上完成,并设置相应的属性来指定数据字段映射[^3]。 #### 二、配置提交逻辑 为了使用户填写的数据能够被保存至后台数据库,需为提交按钮添加 JavaScript 脚本来触发数据写入动作。具体的实现方式如下所示: ```javascript _g().writeReport(); ``` 上述代码片段调用了帆软提供的 `_g()` 方法及其 `writeReport` 接口,用于将当前表单内的所有更改同步回服务器端[^2]。 #### 三、启用一键导入/导出功能(可选) 如果涉及到大量数据的初始加载或者周期性的更新工作,则可以考虑集成 Excel 批量导入插件。该插件不仅简化了繁杂的手动输入流程,还具备错误校验机制——当检测到不符合预期格式的内容时,系统会自动生成一份勘误清单供后续修正之用;而一旦顺利完成整个处理链条之后,则自动刷新前端界面以反映最新状态变化情况[^4]。 #### 四、注意事项 - **环境准备**:确保已正确安装并启用了必要的扩展组件(如前所述提到过的“Excel批量导入”插件),以便充分发挥产品的全部潜力。 - **用户体验优化**:除了基本的功能开发之外,也应关注交互细节的设计,比如适时给予反馈提示信息等措施提升整体易用性满意度水平。 综上所述,借助于 FineReport 的强大能力,即使是复杂的业务场景也能高效应对。无论是常规意义上的简单增删改查操作还是针对特定需求定制化的解决方案都能得到良好满足。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yf_programmer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值