本帖最后由 swejet 于 2021-11-28 12:18 编辑
因为使用了前端设置变量命令,因此本求助的附件工程文件的版本为 7.0.103
==============================================
一、需求概述
把 excel 文件中的数据导入到数据库中的相应数据表中。
二、原始数据源
excel 中的数据如下图:
三、数据库设计
数据库中用于接收数据的数据表结构如下图:
为了避免重复导入数据,建立了区块字典表,如下图所示:
导入数据时的要求:
1.excel 中的A列 [报警区块] 列中的数据,必须在区块字典表中,否则不进行导入,跳过该行数据继续判断下一行数据;
2.报警表中,[报警区块] 列可以重复,[年月] 列也可以重复,但是 [报警区块]&"|"&[年月] 不允许重复;
3.如果在报警表中,页面表格中的 [报警区块]&"|"&[年月] 不存在,则向数据表中添加记录;
4.如果在报警表中,页面表格中的 [报警区块]&"|"&[年月] 存在,则更新数据表中的记录
为了实现上述功能,在页面上设计了两个用户交互按钮:
导入:使用“导入Excel数据到表格”命令,将 excel 文件中的数据导入到页面的表格中,页面上的表格命名为:数据接收容器;
提交:用于判断表格中的数据,根据条件分情况将表格中的数据提交到数据表中
导入按钮绑定的命令如下图:
提交按钮绑定的命令如下图:
为了实现数据导入的要求,建议了两个前端变量:
1.区块名称:取页面上 [表格_数据接收容器] 中的报警区块列的值,用这个值查询区块字典表的行数,如果行数 > 0,则意味着表格中本行数据的区块名称合法
2.区块年月:取页面上 [表格_数据接收容器] 中的报警区块列和年月列的拼合结果,用这个结果查询报警表的行数,如果行数<=0(实际上查询行数不可能小于0,判断等于0也是可以的),说明
进行判断时,按如下两种条件进行判断:
条件1:
1.1 用[@区块名称]查询区块字典表的行数,如果行数 > 0,则意味着表格中本行数据的区块名称合法
1.2 用[@区块年月]查询报警表的行数,如果行数<=0(实际上查询行数不可能小于0,判断等于0也是可以的),说明要导入的数据在报警表中确实不存在,应该添加数据。
当条件1的两个子条件同时满足时,执行数据表的添加操作
条件2:
2.1 用[@区块名称]查询区块字典表的行数,如果行数 > 0,则意味着表格中本行数据的区块名称合法
2.2 用[@区块年月]查询报警表的行数,如果行数 > 0,则说明该区块在该年月已经有数据存在,需要进行数据更新。
当条件2的两个子条件同时满足时,执行数据表的更新操作
现在的结果是:
导入功能正常,excel文件中的数据可以正常导入到页面表格中;
提交按钮的循环仅执行了一次,在数据表中只写入了一行数据。
我分析原因,应该是当执行到数据表操作时,数据表操作完成后,表格刷新了。因为表格是数据松绑定,当页面表格刷新时,通过excel导入的数据行也同时消失了,循环再向表格取数据时,就取不到其他的数据行了。因此准确的说,不是循环终止了,而是循环结束了。
道理我大概是明白,但是我要怎么做才能让循环继续下去呢?
工程文件:
导入的 excel 数据文件:
|