以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 重置列生成数据 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=175931) |
|
-- 作者:rgbjwjb -- 发布时间:2022/3/24 12:22:00 -- 重置列生成数据
|
|
-- 作者:有点蓝 -- 发布时间:2022/3/24 14:41:00 -- DataTables("被征地农民基本情况").Select("土地交付日期 <= #" & dt1.value & "#") 假设界面日期填入“2016-06-21”,上面查询后小于这个日期的数据会有28000+条数据,然后datacolchanged事件有差不多13个列要触发计算,每个列触发一次,就会触发28000 X 13 = 364000次,并且有些列计算后还会触发其它列的计算,连锁触发的列数量再乘以364000,可能会达到上百万的触发次数。 首先,上面的查询条件我觉得不合理,不可能每次都把小于这个日期的所有记录都计算一遍,而是应该有一个范围,比如本月,本年... 其次,考虑按钮执行的时候屏蔽datacolchanged表事件,然后把datacolchanged里需要计算的逻辑提取出来放到按钮里处理
|
|
-- 作者:rgbjwjb -- 发布时间:2022/3/24 22:51:00 -- 根据老师的建议我将上述条件改为:DataTables("被征地农民基本情况").Select("本级补助发放截止日期 <= #" & dt1.value & "#"),(因为只要在发放期内,29000户每月都要发放,我觉得只能这样),我也把datacolchanged里需要计算的逻辑提取出来放到该按钮中处理,但是还是计较慢,不知老师还有没有建议,谢谢! |
|
-- 作者:有点蓝 -- 发布时间:2022/3/24 23:21:00 -- 也就这这样了。 或者考虑"被征地农民基本情况"在录入数据的时候就计算好相关数据,录入一行就计算一行,不要等到点击按钮再一次性计算 |
|
-- 作者:rgbjwjb -- 发布时间:2022/3/26 15:38:00 -- 我考虑在“补助发放”窗体中选择“所属期”后(dt1),先筛选掉部分数据:Tables("被征地农民基本情况").Filter ="是否结清=\'未结清\' and 征地时年龄段<>\'四\' and 本级补助截止日期>= #" & dt1.value & "# ";还缺一个筛选条件:从表“参加企业保险明细表”中找到“在保月份<>#" & dt1.value & "#”的农户(用身份证号码相关联),并把这些农户筛选掉(因为只要当月有保险的农户就不需要发放补助),缺的这个筛选条件不知怎么加上去,请老师指教一下,谢谢! |
|
-- 作者:有点蓝 -- 发布时间:2022/3/26 15:51:00 -- 使用加载处理 dataTables("被征地农民基本情况").loadFilter ="是否结清=\'未结清\' and 征地时年龄段<>\'四\' and 本级补助截止日期>= #" & dt1.value & "# and 身份证号 in(select 身份证号 from 参加企业保险明细表 where 在保月份<>#" & dt1.value & "#)" dataTables("被征地农民基本情况").load
|
|
-- 作者:rgbjwjb -- 发布时间:2022/3/27 9:46:00 --
|
|
-- 作者:有点蓝 -- 发布时间: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 -- 发布时间:2022/3/29 19:49:00 -- 上述代码是不是我放错了位置,加载条件没起作用,年龄段为“四”的仍然没有过滤掉,请老师帮看下,谢谢!
|
|
-- 作者:有点蓝 -- 发布时间:2022/3/29 20:09:00 -- 请上传实例说明 |