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

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


业务需求


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

请添加图片描述

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

思考过程


使用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();
  • 1
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
您好!感谢您的提问。关于帆软BI部署填报报表,我可以为您提供一些基本信息。 帆软BI是一款企业级的商业智能软件,可以用于数据分析、报表制作和数据可视化等功能。在部署填报报表方面,您可以按照以下步骤进行操作: 1. 安装帆软BI:首先,您需要将帆软BI软件安装在服务器或者您的本地电脑上。按照官方文档提供的步骤进行安装。 2. 数据源配置:在帆软BI中,您需要配置数据源,以便连接到您的数据源,比如数据库、Excel文件等。根据您的具体需求,选择合适的数据源类型,并按照指引进行配置。 3. 报表设计:使用帆软BI提供的报表设计器工具,设计填报报表的布局和样式。您可以添加数据集、图表、表格等元素,并设置相应的数据连接和数据筛选条件。 4. 填报功能配置:对于填报报表,您可以配置相应的填报功能,比如数据录入、数据修改、数据审核等。帆软BI提供了灵活的填报配置选项,可以根据您的需求进行定制。 5. 权限管理:根据不同用户角色和权限,您可以对填报报表设置相应的访问权限和数据权限。这样可以确保只有授权的用户可以访问和填报报表。 6. 部署与发布:完成报表设计和配置后,您可以将填报报表部署到帆软BI的服务器或者Web端,使用户能够通过浏览器访问和填报报表。 以上是一个简单的帆软BI部署填报报表的流程,具体操作可能会根据您的需求和环境有所不同。如果您有更多的问题或者需要进一步的帮助,请随时告诉我!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

J.T.L

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

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

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

打赏作者

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

抵扣说明:

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

余额充值