Foxtable(狐表)用户栏目专家坐堂 → 重置列生成数据


  共有5005人关注过本帖树形打印复制链接

主题:重置列生成数据

帅哥哟,离线,有人找我吗?
rgbjwjb
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:651 积分:6614 威望:0 精华:0 注册:2016/12/27 21:05:00
重置列生成数据  发帖心情 Post By:2022/3/24 12:22:00 [只看该作者]

补助发放\“补助发放”窗体,当输入“发放日期”后,点击“生成本期工资”后,几乎运行3个小时候才有数据,且部分列没有数据,只有通过重置列后才有,请问代码哪里有问题,请指教如何改正,谢谢!
链接:https://pan.baidu.com/s/1plmgrAmZDQkj4Zu888bjEQ 
提取码:wqsx 

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110810 积分:563988 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/3/24 14:41:00 [只看该作者]

DataTables("被征地农民基本情况").Select("土地交付日期 <= #" & dt1.value & "#")

假设界面日期填入“2016-06-21”,上面查询后小于这个日期的数据会有28000+条数据,然后datacolchanged事件有差不多13个列要触发计算,每个列触发一次,就会触发28000 X 13 = 364000次,并且有些列计算后还会触发其它列的计算,连锁触发的列数量再乘以364000,可能会达到上百万的触发次数。

首先,上面的查询条件我觉得不合理,不可能每次都把小于这个日期的所有记录都计算一遍,而是应该有一个范围,比如本月,本年...
其次,考虑按钮执行的时候屏蔽datacolchanged表事件,然后把datacolchanged里需要计算的逻辑提取出来放到按钮里处理

 回到顶部
帅哥哟,离线,有人找我吗?
rgbjwjb
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:651 积分:6614 威望:0 精华:0 注册:2016/12/27 21:05:00
  发帖心情 Post By:2022/3/24 22:51:00 [只看该作者]

根据老师的建议我将上述条件改为:DataTables("被征地农民基本情况").Select("本级补助发放截止日期 <= #" & dt1.value & "#"),(因为只要在发放期内,29000户每月都要发放,我觉得只能这样),我也把datacolchanged里需要计算的逻辑提取出来放到该按钮中处理,但是还是计较慢,不知老师还有没有建议,谢谢!

 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110810 积分:563988 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/3/24 23:21:00 [只看该作者]

也就这这样了。

或者考虑"被征地农民基本情况"在录入数据的时候就计算好相关数据,录入一行就计算一行,不要等到点击按钮再一次性计算

 回到顶部
帅哥哟,离线,有人找我吗?
rgbjwjb
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:651 积分:6614 威望:0 精华:0 注册:2016/12/27 21:05:00
  发帖心情 Post By:2022/3/26 15:38:00 [只看该作者]

我考虑在“补助发放”窗体中选择“所属期”后(dt1),先筛选掉部分数据:Tables("被征地农民基本情况").Filter ="是否结清='未结清' and 征地时年龄段<>'四' and  本级补助截止日期>= #" & dt1.value & "# ";还缺一个筛选条件:从表“参加企业保险明细表”中找到“在保月份<>#" & dt1.value & "#”的农户(用身份证号码相关联),并把这些农户筛选掉(因为只要当月有保险的农户就不需要发放补助),缺的这个筛选条件不知怎么加上去,请老师指教一下,谢谢!

 回到顶部
帅哥,在线噢!
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110810 积分:563988 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/3/26 15:51:00 [只看该作者]

使用加载处理

dataTables("被征地农民基本情况").loadFilter ="是否结清='未结清' and 征地时年龄段<>'四' and  本级补助截止日期>= #" & dt1.value & "# and 身份证号 in(select 身份证号 from 参加企业保险明细表 where 在保月份<>#" & dt1.value & "#)"
dataTables("被征地农民基本情况").load

 回到顶部
帅哥哟,离线,有人找我吗?
rgbjwjb
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:651 积分:6614 威望:0 精华:0 注册:2016/12/27 21:05:00
  发帖心情 Post By:2022/3/27 9:46:00 [只看该作者]

Tables("被征地农民基本情况").Filter ="是否结清='未结清' and 征地时年龄段<>'四' and  本级补助截止日期>= #" & dt1.value & "# and 身份证号 in(select 身份证号 from {参加企业保险明细表} where 在保月份<>#" & dt1.value & "#)"
运行错误:身份证号码后缺操作符。请问怎么处理,谢谢!

 回到顶部
帅哥,在线噢!
有点蓝
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110810 积分:563988 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/3/27 20:24:00 [只看该作者]

筛选不支持这种用法。只能这样

dim s as string = DataTables("参加企业保险明细表").GetComboListString("身份证号","在保月份<>#" & dt1.value & "#")
Tables("被征地农民基本情况").Filter ="是否结清='未结清' and 征地时年龄段<>'四' and  本级补助截止日期>= #" & dt1.value & "# and 身份证号 in ('" & s.replace("|","','") & "')"


 回到顶部
帅哥哟,离线,有人找我吗?
rgbjwjb
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:651 积分:6614 威望:0 精华:0 注册:2016/12/27 21:05:00
  发帖心情 Post By:2022/3/29 19:49:00 [只看该作者]


上述代码是不是我放错了位置,加载条件没起作用,年龄段为“四”的仍然没有过滤掉,请老师帮看下,谢谢!

 回到顶部
帅哥,在线噢!
有点蓝
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110810 积分:563988 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/3/29 20:09:00 [只看该作者]

请上传实例说明

 回到顶部
总数 18 1 2 下一页