请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册

QQ登录

只需一步,快速开始

swejet 悬赏达人认证 活字格认证
论坛元老   /  发表于:2021-11-28 11:30  /   查看:2544  /  回复:15
100金币
本帖最后由 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 数据文件:











附件: 您需要 登录 才可以下载或查看,没有帐号?立即注册

最佳答案

查看完整内容

您好,楼上大佬说的对哦,服务端命令可以解决数据表操作完成后,表格刷新的问题。

15 个回复

倒序浏览
最佳答案
最佳答案
Howie.Sun讲师达人认证 悬赏达人认证 活字格认证
论坛元老   /  发表于:2021-11-28 11:30:13
来自 5#
您好,楼上大佬说的对哦,服务端命令可以解决数据表操作完成后,表格刷新的问题。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
hubei333
高级会员   /  发表于:2021-11-28 17:44:30
2#
你那个写法,应该是写服务端命令才可以有效的吧,表格上应该是循环更新后提交。

评分

参与人数 1满意度 +5 收起 理由
swejet + 5

查看全部评分

回复 使用道具 举报
swejet悬赏达人认证 活字格认证
论坛元老   /  发表于:2021-11-28 17:46:44
3#
hubei333 发表于 2021-11-28 17:44
你那个写法,应该是写服务端命令才可以有效的吧,表格上应该是循环更新后提交。

我等了快6个小时了终于等来了一个回复。能再说详细一些吗?怎么个循环更新后提交?
回复 使用道具 举报
hubei333
高级会员   /  发表于:2021-11-28 18:23:26
4#
在你数据接收容器里判断是否重复,删除重复项,然后提交表格
回复 使用道具 举报
swejet悬赏达人认证 活字格认证
论坛元老   /  发表于:2021-11-30 08:49:43
6#
Howie.Sun 发表于 2021-11-29 14:54
您好,楼上大佬说的对哦,服务端命令可以解决数据表操作完成后,表格刷新的问题。

意图我大概明白了,就是说数据表操作后,前端表格是无论如何都要刷新的,这个是无解的,只能从后端想办法,是这样吗?
回复 使用道具 举报
Howie.Sun讲师达人认证 悬赏达人认证 活字格认证
论坛元老   /  发表于:2021-11-30 09:22:40
7#
swejet 发表于 2021-11-30 08:49
意图我大概明白了,就是说数据表操作后,前端表格是无论如何都要刷新的,这个是无解的,只能从后端想办法 ...

您好,主要是因为数据表操作的问题呢,数据表操作一次完成后,即和数据表交互完成后,表格就会刷新一次,类似这样的场景因为前端需要取表格中的数据所以使用表格操作命令是比较合适的,一次性的交互就没问题,可是我们需要逐条进行判断所以使用服务端命令一次性取到表格中的所有数据,再逐条分析就可以啦。
回复 使用道具 举报
swejet悬赏达人认证 活字格认证
论坛元老   /  发表于:2021-11-30 10:20:08
8#
Howie.Sun 发表于 2021-11-30 09:22
您好,主要是因为数据表操作的问题呢,数据表操作一次完成后,即和数据表交互完成后,表格就会刷新一次, ...

大概明白了,前面不通走后边,现在是确认前面是不通的了,只要有数据表操作前端就刷新表格这个策略没问题,就应该是这个策略。我这种情况就应该服务端命令解决。

我去实现一下

话说,这个贴子回贴这么少,是因为大家都没有这个需求吗?我觉得导入数据时进行数据清洗应该是一个特别常见的需求啊?
回复 使用道具 举报
Howie.Sun讲师达人认证 悬赏达人认证 活字格认证
论坛元老   /  发表于:2021-11-30 10:26:51
9#
swejet 发表于 2021-11-30 10:20
大概明白了,前面不通走后边,现在是确认前面是不通的了,只要有数据表操作前端就刷新表格这个策略没问题 ...

主要是您发的帖子长度稍微长了点,在这个喧嚣的时代,静得下心来的人比较少吧。
回复 使用道具 举报
hubei333
高级会员   /  发表于:2021-12-1 19:26:34
10#
swejet 发表于 2021-11-30 10:20
大概明白了,前面不通走后边,现在是确认前面是不通的了,只要有数据表操作前端就刷新表格这个策略没问题 ...

大家用习惯服务端命令后,基本上比较少用前端来解决表格循环的问题了,
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部