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


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

主题:重置列生成数据

帅哥,在线噢!
有点蓝
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110813 积分:564003 威望: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里需要计算的逻辑提取出来放到按钮里处理

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


加好友 发短信
等级:超级版主 帖子:110813 积分:564003 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/3/24 23:21:00 [显示全部帖子]

也就这这样了。

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

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


加好友 发短信
等级:超级版主 帖子:110813 积分:564003 威望: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

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


加好友 发短信
等级:超级版主 帖子:110813 积分:564003 威望: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("|","','") & "')"


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


加好友 发短信
等级:超级版主 帖子:110813 积分:564003 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/3/29 20:09:00 [显示全部帖子]

请上传实例说明

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


加好友 发短信
等级:超级版主 帖子:110813 积分:564003 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/3/31 9:13:00 [显示全部帖子]

哪个窗口,哪个事件的代码?

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


加好友 发短信
等级:超级版主 帖子:110813 积分:564003 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/3/31 14:24:00 [显示全部帖子]

“生成本期工资”只是做了个筛选,但是后续其它代码没看到和这个筛选有任何关系,也用不到这个筛选。

如果是要用到下面的DataTables("被征地农民基本情况").Select,应该把条件放到select里,select和tables(xxx).filter是没有任何关系的

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


加好友 发短信
等级:超级版主 帖子:110813 积分:564003 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/4/1 9:43:00 [显示全部帖子]

怎么改的,重新贴出按钮代码

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


加好友 发短信
等级:超级版主 帖子:110813 积分:564003 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/4/2 8:30:00 [显示全部帖子]

Tables("补助发放表").StopRedraw()
Dim dt1 As WinForm.DateTimePicker = e.Form.Controls("DateTimePicker1")
Dim s As String = DataTables("参加企业保险明细表").GetComboListString("身份证号码","在保月份<>#" & dt1.value & "#")
If DataTables("补助发放表").compute("count(所属期)","所属期=#" & dt1.value & "#") = 0 Then
    For Each dr As DataRow In DataTables("被征地农民基本情况").Select("土地交付日期 <= #" & dt1.value & "# and 是否结清='未结清' and 征地时年龄段<>'四' and  本级补助截止日期>= #" & dt1.value & "# and 身份证号码 in ('" & s.replace("|","','") & "')")
        Dim r As Row = Tables("补助发放表").AddNew()
        r("姓名") = dr("姓名")
……

 回到顶部