+关注继续查看

问题

FineReport 使用JS实现数据库更新(自动更新,不用点击按钮)

问题描述

数据库中部分表数据按照一段时间需要更新(如:每个月更新一次),这样数据库中的数据相关数据的部分值是相同的,需要让每一个月的月份更新后,数据库中其他表对应的关系也自动更新。

具体步骤

创建决策报表frm

具体包括的组件:
一个按钮控件(两个文本框(可隐藏)):用于更新月份表
一个网页框控件:用于刷新分数表(可隐藏,初始化时的网页url为空)

image.png

创建普通报表cpt

包括组件:
相关需要更新数据的查询
一个按钮控件

image.png

frm报表相关处理

月份更新文本控件控件值参考公式代码:year(now())+"-"+month(now())
  • 按钮相关设置:

    • 设置两个点击事件:

      • 点击1:设置提交入库事件-入库的值是 文本框控件名作为动态参数的值
      • 点击2:设置JavaScript脚本
        注:链接尾部的参数不要忘记添加:&op=write
        此参数的目的是以填报形式打开报表
//点击2的js
var rhiframe0 = _g().getWidgetByName('rhiframe0');
rhiframe0.setValue("${servletURL}?viewlet=文件夹路径/month_update.cpt&op=write");

image.png

cap报表相关处理

  • 添加一个提交按钮控件
  • 添加数据库查询的数据列到单元格中
  • 按钮控件的事件设置

    • 初始化事件(使用初始化事件可以不用执行点击相关事件)

      • 选择提交入库(这里不直接选择js脚本的原因是最开始初始化时还没有查询到数据库的值到单元格中,使用提交入库的回调函数后单元格中有数据,可以使用后面的点击事件进行数据提交),然后选择回调函数,回调函数选择js脚本
    • 点击事件

      • 选择提交入库(这里的是真正的把查询到单元格中的值提交到数据库中)
//初始化事件提交入库的回调js
//submit2: 当前按钮的控件名
submit2 = _g().getWidgetByName('submit2');
//赋予按钮点击事件
submit2.fireEvent('click');
  • 初始化事件图片

image.png

  • 点击事件图片

image.png

一些关于JS的过程抽象的高阶函数的使用的例子(单次点击,防抖,节流)
在JavaScript中,我们很常见的是需要掌握**过程抽象**的思想。对于过程抽象,是函数式编程思想的应用。而 **高阶函数(HOF)**  便是过程抽象的体现之一。 接下来我们就来一起学习一下常见的高阶函数。 # Once 在一些场景下,我们可能会遇到这样的需求,我们做了一个报名页面,然后需要用户提交报名成功的个人信息,但是用户可能会因为手抖,或者是一些网络的卡顿之类的原因,造成了用户在短时间内大量点击提交按钮,这时候可能会突然出现很多用户提交的相同的信息,为了避免这种情况,我们可以在前端做出一定的优化。 我们可以利用这样的高阶函数来完成优化: function once
通过HTML+CSS+Javascript实现向下滚动滚动条出现导航栏并出现回到顶部按钮点击按钮回到顶部(一)...
通过HTML+CSS+Javascript实现向下滚动滚动条出现导航栏并出现回到顶部按钮点击按钮回到顶部(一)...
1.控制按钮,在短时间内被多次点击,第一次以后的点击无效。 2.控制按钮,在点击按钮触发的请求响应之前,再次点击无效。 3.配置特殊的URL,然后控制这些URL请求的最小时间间隔。如果再次请求跟前一-次请求间隔很小,弹窗二次提示,是否继续操作。 防止无意识复点击按钮 给按钮添加控制,在control 毫秒内,第一次点击事件之后的点击事件不执行。 【JavaScript】点击的添加样式,其他的删除样式(addClass和removeClass)
【JavaScript】点击的添加样式,其他的删除样式(addClass和removeClass)
使用 JavaScript 的 HTML 页面混合、JavaScript 文件引用和 HTML 代码嵌入 3 种方式在 HTML 页面上打印出“点击我进入到百度首页”的超链接
使用 JavaScript 的 HTML 页面混合、JavaScript 文件引用和 HTML 代码嵌入 3 种方式在 HTML 页面上打印出“点击我进入到百度首页”的超链接