巧用标志字段实现填报数据的暂存与锁定

简介: <br>用户页面端数据录入时,由于数据的不确定性,通常会需要将数据暂存而不真正入库,类似草稿功能,等能确保数据准确时再进行数据入库操作,来乾学院看看如果简单的通过一个标志字段实现数据的暂存与锁定。<a href="http://c.

需求场景
在用户录入完数据后,如果能确保数据正确,可以在页面端点击锁定按钮,从而将数据锁定,以便防止误操作对数据产生影响,并且限定锁定状态的数据才是有效数据,在查询统计时只需要统计有效数据。
解决方案
针对这个需求,我们可以在数据表中增加一个标志字段,通过该标志字段的状态来确定数据是否处于“锁定”状态。
下面是具体的实现步骤:
一:在数据表中增加字段:flag
1

FLAG 字段为 0 时表示数据为暂存数据,为 1 是表示是锁定数据
二:根据需求制作订单明细表,表样如下图:
2

A3 单元格类型为维度格,表达式为 =dd.(DDID), 字段名称设置为:dd.DDID
B3~E3 单元格类型为数值格,字段名称分别设置数据表中对应的名称。
数据处理中使用多源 SQL,数据来源为:
3

接下来就看一下如何通过增加标志位字段进行数据控制。
在报表后追加一数据列(F 列),将 F3 单元格设置成数值格,并在字段名称属性处设置“FLAG”,这样就能在 F3 单元格取出状态位,其余单元格可根据 F3 的值进行是否可写控制,值为 1 时为锁定状态。
在 B3~E3 单元格的是否可编辑表达式中写入表达式:F3!=“1”, 这样当 F3 单元格的值不为 1(非状态锁定)时,这些单元格可编辑。
现在报表展现时就能够根据状态位的值来控制数据是否可被修改了。接下来再看一下,如何控制状态位的标志值。
用户操作时是在页面端点击锁定按钮,所以可以在点击该按钮时先更改报表中的状态位,然后再执行数据保存操作,而更改状态位的值可以通过 javascript 脚本更改报表单元格 (F2) 的值来实现。
接下来看下 F2 单元格设置,如图:
4

F2 单元格既要接受 js 控制,又要将值回写到数据库表中。在通过多源 SQL 回写数据时,需要设置表达式,这里将 F2 单元格类型设置成数值型,字段名称中写入:a.TYPE,表示 F2 单元格放入对象 a 中,名字为 TYPE,并且该单元格要读取数据表中的初始值,所以单元格中写入 =F3。然后在数据处理的数据去向中设置如下:
5

也就是说,保存时会将 a.TYPE 的值保存到 FLAG 字段中。这里对通过 string() 函数把 a.TYPE 转换成字符串,这样就可以将 F2 单元格的值保存到数据库表的对应状态位中。F 列为控制状态列,设置完成后将列宽设成 0 即可。
接下来看一下如何动态更改 F2 的值。
1、 在填报表工具条中增加锁定按钮。
填报表工具条是在 showInput.jsp 中引入的:inputtoolbar.jsp,用文本编辑器打开,在里边增加一个按钮:
锁定
注:按钮样式可自行设置,此处用简单的文本。
2、 在 showInput.jsp 中增加 js 函数
function save(arg1){
document.getElementById(arg1+“0_F”+2).setAttribute(“value”,“1”);
_inputSubmit(arg1);// 保存报表
}
该 js 函数控制,如果页面端点击锁定按钮后,将 F2 单元格的值设成 1,然后再执行保存报表操作,从而能够将标志位保存到数据库中。
页面如下:
6

再将 F 列隐藏掉即可(列宽设成 0)
这样,我们就实现了点击“锁定”按钮将数据锁定以防在页面端再次修改。
如需要在查询统计时只针对锁定的有效数据,那么只需要在 where 条件中增加 FLAG=’1’就行了。
需求扩展
有了标志位的使用,在实际中可以做更复杂的控制,比如将填报嵌入业务流程中,实现数据的审核,回退,入库等操作,后续文章我们会做详细的介绍。

作者:gxy
链接:http://c.raqsoft.com.cn/article/1542007656738?r=IBelieve
来源:乾学院
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

目录
相关文章
|
自然语言处理 物联网
化学领域的新篇章:大型语言模型的创新应用
【4月更文挑战第20天】LlaSMol项目成功应用大型语言模型(LLMs)于化学研究,创建SMolInstruct数据集,包含14个化学任务和300万个样本。经过微调,LlaSMol模型在多任务上超越GPT-4,展示LLMs在化学领域的潜力。然而,数据准确性和模型泛化性仍是挑战,未来需进一步研究。[论文链接](https://arxiv.org/pdf/2402.09391.pdf)
221 1
|
7月前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于GA遗传优化TCN-LSTM时间卷积神经网络时间序列预测算法matlab仿真
本项目基于MATLAB 2022a实现了一种结合遗传算法(GA)优化的时间卷积神经网络(TCN)时间序列预测算法。通过GA全局搜索能力优化TCN超参数(如卷积核大小、层数等),显著提升模型性能,优于传统GA遗传优化TCN方法。项目提供完整代码(含详细中文注释)及操作视频,运行后无水印效果预览。 核心内容包括:1) 时间序列预测理论概述;2) TCN结构(因果卷积层与残差连接);3) GA优化流程(染色体编码、适应度评估等)。最终模型在金融、气象等领域具备广泛应用价值,可实现更精准可靠的预测结果。
|
12月前
|
Ubuntu 应用服务中间件 nginx
Ubuntu安装笔记(三):ffmpeg(3.2.16)源码编译opencv(3.4.0)
本文是关于Ubuntu系统中使用ffmpeg 3.2.16源码编译OpenCV 3.4.0的安装笔记,包括安装ffmpeg、编译OpenCV、卸载OpenCV以及常见报错处理。
788 2
Ubuntu安装笔记(三):ffmpeg(3.2.16)源码编译opencv(3.4.0)
|
jenkins Java 测试技术
Jenkins 在持续集成/持续交付(CI/CD)管道中的应用
【8月更文第31天】 在现代软件开发过程中,持续集成(Continuous Integration, CI)和持续交付(Continuous Delivery, CD)已经成为提升开发效率和软件质量的重要实践。Jenkins 是一个广泛使用的开源工具,它能够帮助团队实现自动化构建、测试和部署,是 CI/CD 流水线的核心组件之一。本文将详细介绍 Jenkins 在 CI/CD 管道中的应用,并提供具体的代码示例。
474 0
|
11月前
|
机器学习/深度学习 存储 监控
实时特征处理框架:构建与应用实践
在大数据时代,实时特征处理框架成为数据驱动应用的核心组件。这些框架能够从海量数据中提取特征,并实时更新,为机器学习模型提供动力。本文将探讨实时特征框架的构建和生产实践,分享如何构建一个高效、稳定的实时特征处理系统。
206 2
|
SQL Java 数据库连接
深入理解 JDBC:Java 数据库连接详解
数据库是现代应用程序的核心组成部分之一。无论是 Web 应用、移动应用还是桌面应用,几乎都需要与数据库交互以存储和检索数据。Java 提供了一种强大的方式来实现与数据库的交互,即 JDBC(Java 数据库连接)。本文将深入探讨 JDBC 的各个方面,从基本概念到实际编程示例,以帮助您理解和使用 JDBC。
939 2
|
机器学习/深度学习 人工智能 运维
机器学习中的模型评估与选择
【8月更文挑战第15天】在机器学习领域,一个关键的挑战是如何从众多模型中选择出最佳者。本文将探讨模型评估的重要性和复杂性,介绍几种主流的模型评估指标,并讨论如何在实际应用中进行有效的模型选择。通过分析不同的评估策略和它们在实际问题中的应用,我们将揭示如何结合业务需求和技术指标来做出明智的决策。文章旨在为读者提供一个清晰的框架,以理解和实施机器学习项目中的模型评估和选择过程。
|
自然语言处理 前端开发
深入解析 React-i18next:在 React 中实现国际化(二)
深入解析 React-i18next:在 React 中实现国际化(二)
346 0
|
缓存 算法
内存系列学习(七):ARM处理器的快速上下文切换技术
内存系列学习(七):ARM处理器的快速上下文切换技术
323 0
|
DataWorks Python
DataWorks如何读取资源 这块有案例么?
DataWorks如何读取资源 这块有案例么?
178 1