帆软填报报表实现日期自动生成总结

您所在的位置:网站首页 新做的表格怎么能自动生成日期 帆软填报报表实现日期自动生成总结

帆软填报报表实现日期自动生成总结

2024-07-04 17:49:21| 来源: 网络整理| 查看: 265

帆软填报报表实现日期自动生成总结

文章目录 帆软填报报表实现日期自动生成总结业务需求思考过程使用sysdate使用触发器 V1 版本创建时间设置更新时间设置填报报表设置小bug修复 V2版本

业务需求

主管让我使用帆软填报报表在实现任务填报的同时,能够能有几列来记录创建和修改的一些日期,如下图所示。

请添加图片描述

*如果看解决方案的话,直接跳到最后实现就行了,不需要看我的解决思路。

思考过程 使用sysdate

刚开始我觉得创建时间和更新时间的自动生成十分容易,只需要使用Oracle数据库的一个特性,在建表的时候给日期一个 sysdate 的默认值就可以实现,如下图所示。

请添加图片描述

在数据库使用insert语句正常插入的时候可以正常使用,生成对应的日期,但是使用填报报表填写数据的时候,插入数据字段的时候两个默认值为sysdate的字段都没有自动生成,于是我就只能采用其他的方法。

使用触发器

Oracle自动生成日期的方法有两种,sysdate和触发器,于是我就写了一个触发器来实现日期的自动生成,在数据库层面使用触发器来给日期字段赋值sysdate,代码如下所示。

CREATE OR REPLACE trigger XXXX_TR BEFORE INSERT on XXXX for each row begin :new.CREATION_DATE := sysdate; :new.LAST_UPDATE_DATE := sysdate; end;

使用触发器后,报表填入数据的时候能够实现数据库数据的正常插入了,那只要刷新一下就可以回显到报表上了,我表示非常开心,然后询问了一下导师如何实现更新日期的操作😁 导师指出了我索引命名的不规范,并请教了一下主管如何正确的命名,结果主管否定了我使用触发器生成日期的方法,可能是由于触发器不好维护的方法,于是我又只能另寻其他方法来解决,日期自动生成的问题。

V1 版本 创建时间设置

创建时间的显示值设置

请添加图片描述

函数解释: 如果没有创建日期,则完成日期的自动生成,如果已经有日期,则不改变

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kadjYmmF-1661495459527)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220826134802877.png)]

创建时间单元格设置插入行策略

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-D7PxurAH-1661495459527)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220826135126784.png)]

更新时间设置

更新时间的设置和创建时间差不多,先对显示值进行创建

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2AjKUUG4-1661495459528)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220826134833742.png)]

然后同样设置插入行策略

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mGhZapH6-1661495459529)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220826135734045.png)]

填报报表设置

填报报表属性设置数据未修改不更新

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0PXEMz5A-1661495459530)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220826134435460.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JYVTPhCc-1661495459531)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220826134544886.png)]

添加一个填报成功后的JS脚本,让报表提交后自动刷新

//在 填报成功 后自动刷新 location.reload(); 小bug修复

使用以上方法基本可以实现日期自动生成和自动更新,但由于使用的是插入行策略,而帆软报表在数据库没有数据的时候,会给你一个默认的空白白行,这条数据不是你手动点击插入数据进行添加的,所以不能触发插入行策略,解决方法也很简单,只需要手动删除数据删除掉那行,在进行一次手动插入数据,新插入的行也可以自动生成日期了,但这对用户来说不是特别的友好,于是我使用代码的方式进行了修改,如果有更好的解决方式,希望能在下面评论指点指点我。

首先,我用JS判断数据库是否拥有数据,但由于公司服务器端设置了脚本限制,我无法使用脚本执行SQL获取数据,于是我采用了其他的方法。设置一个单元格来获取主键的值,然后通过设置单元格的条件属性进行隐藏来保证页面的美观,最后在通过获取单元格的值来判断是否为空数据库,如果为空就进行赋值。单元格设置如下。 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EvIsc2Dk-1661495459532)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220826141841155.png)]

设置公式为 1=1 保证能够实现,然后通过设置行高为 0 来进行单元格的隐藏 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qGBRHFF3-1661495459532)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220826141856624.png)]

接着就通过 JS 获取单元格的值,判断是否为第一行,然后进行赋值,这里JS没有快速获得日期的函数,于是我就使用了一个帆软的模板函数来设置日期,然后通过JS参数进行调用。

function() { //获取单元格的值 var v1 = _g().getCellValue(0, 0, 2); //判断,若为空,代表没有值,使用js对单元格进行赋值 if (v1 === '') { _g().setCellValue("S2", "${date}"); _g().setCellValue("T2", "${date}"); } }

这样就可以实现完整的自动生成和更新日期了

V2版本

上诉方法通过新插入行的方式进行判断,而填报默认第一行的新插入行为空,所以需要写多余的JS去判断是否为第一行,如果是第一行就自动生成日期,这大大增加代码的维护难度,所以尽量少的使用JS变成了我们需要做的事情,于是在经过几个版本的迭代后,我总结了V2版本,实现方法如以下所示。

创建人,更新人,创建时间,更新时间四个字段都添加条件属性,使用公式LEN($$$) = 0判断是否为空,为空就自动给创建人附上新值,创建时间和更新时间都使用公式赋值NOW()创建人和更新人用公司赋值$fine_username

image-20221202134941028

image-20221202134755749

image-20221202134956418

按照以上的步骤就能实现创建记录的时候,自动生成相关信息了,接下来是让创建信息进行自动修改,打开模板->报表填报属性

image-20221202135513587

勾选未修改不更新(如果有用到公式最好写在单元格内,不要在报表填报属性内写,否则就不能实现未修改不更新了)

image-20221202135601914

在两个数据列内维护当前用户和当前时间,一样用now()和$fine_username(不要和数据列在同一行,最好在标题行维护)

image-20221202140018259

然后将提交进数据库的时间和更新人字段绑定对应时间和字段所在的单元格即可。

image-20221202135945332 NOW()这个时间是由进入当前报表的时间确定的,所以最好在每次提交的时候刷新一下页面,保证每次提交的时间相对准确,提交刷新页面可以使用JS来实现。

image-20221227085050906

选择模板Web属性后->填报页面设置于,然后选择为该模板单独设置

image-20221227085115679

在事件设置添加一个填报成功的JS函数,JS代码如下所示。

location.reload();


【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭