以文本方式查看主题 - Foxtable(狐表) (http://www.foxtable.com/bbs/index.asp) -- 专家坐堂 (http://www.foxtable.com/bbs/list.asp?boardid=2) ---- 工料总计划进度计算每月工料计划,目标达到,但速度还是很慢 (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=110911) |
||||
-- 作者:chengjingliang -- 发布时间:2017/12/12 13:03:00 -- 工料总计划进度计算每月工料计划,目标达到,但速度还是很慢 这是工料总计划进度计算每月工料计划,目标达到,但速度还是很慢,有没有更快的计算代码,实在不行,能不能只计算当前鼠标选择的项目,这样当我数据量非常大的时候,也能保证计算不至于崩溃? DataTables("工料月计划").DataRows.Clear MainTable = Tables("工料月计划") For Each r As DataRow In DataTables("工料总计划").Select("计划开始 is not null") Dim sd As Date = r("计划开始") Dim ed As Date = r("计划完成") Dim count As Double = r("计划数量") \' Dim count As Double = r("计划金额") Dim sp As TimeSpan = ed-sd Dim avg As Double = count / (sp.TotalDays+1) Dim i As Double = 0 Dim sum As Double = 0 Do While sd <= ed If sd.Day = 1 OrElse sd = ed Then Dim dr As DataRow = DataTables("工料月计划").AddNew dr("项目ID") = r("项目ID") dr("工料ID") = r("工料ID") dr("清单明细ID") = r("清单明细ID") dr("月份") = format(sd.AddDays(-1), "yyyyMM") If sd = ed Then dr("月计划数量") = count-sum \' dr("月计划金额") = count-sum Else dr("月计划数量") = i*avg \' dr("月计划金额") = i*avg sum += i*avg End If i = 1 Else i += 1 End If sd = sd.AddDays(1) Loop Next |
||||
-- 作者:y2287958 -- 发布时间:2017/12/12 13:18:00 -- 上例子 |
||||
-- 作者:chengjingliang -- 发布时间:2017/12/12 14:09:00 -- 如下
|
||||
-- 作者:有点甜 -- 发布时间:2017/12/12 14:30:00 -- 参考代码
systemready = False |
||||
-- 作者:有点甜 -- 发布时间:2017/12/12 14:31:00 -- 不要在批量操作的时候,触发datacolchanged事件啊。 |
||||
-- 作者:chengjingliang -- 发布时间:2017/12/12 15:08:00 -- 是指在批量操作之前触发datacolchanged?,还是触发其他事件? [此贴子已经被作者于2017/12/12 15:24:50编辑过]
|
||||
-- 作者:有点甜 -- 发布时间:2017/12/12 15:23:00 -- 以下是引用chengjingliang在2017/12/12 15:08:00的发言:
是指在批量操作之前触发datacolchanged?,还是出发其他事件?
看4楼代码,你做批量操作的时候,不要触发datacolchanged
http://www.foxtable.com/webhelp/scr/2218.htm
|
||||
-- 作者:chengjingliang -- 发布时间:2017/12/13 14:18:00 -- 月计划的工料一类、工料二类、工料名称、工料单位、计划单价、项目名称如何体现出来? |
||||
-- 作者:有点甜 -- 发布时间:2017/12/13 14:25:00 -- 以下是引用chengjingliang在2017/12/13 14:18:00的发言:
月计划的工料一类、工料二类、工料名称、工料单位、计划单价、项目名称如何体现出来?
根据你的逻辑,查找对应的表find,赋值。
|
||||
-- 作者:有点甜 -- 发布时间:2017/12/13 14:27:00 -- find代码写在这个位置
For Each r As DataRow In drs Dim fdr as DataRow = DataTables("某表").find("某条件") |