这是工料总计划进度计算每月工料计划,目标达到,但速度还是很慢,有没有更快的计算代码,实在不行,能不能只计算当前鼠标选择的项目,这样当我数据量非常大的时候,也能保证计算不至于崩溃?
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