Foxtable(狐表)用户栏目专家坐堂 → 工料总计划进度计算每月工料计划,目标达到,但速度还是很慢


  共有2115人关注过本帖平板打印复制链接

主题:工料总计划进度计算每月工料计划,目标达到,但速度还是很慢

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/12/12 14:30:00 [只看该作者]

参考代码

 

systemready = False
DataTables("工料月计划").StopRedraw
DataTables("工料月计划").DataRows.Clear
MainTable = Tables("工料月计划")
Dim drs = DataTables("工料总计划").Select("计划开始 is not null")
Dim idx As Integer = 0
For Each r As DataRow In drs
    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
    idx += 1
    Dim v As Integer = idx / drs.count * 100
    StatusBar.ProgressBar.Visible =True
    StatusBar.ProgressBar.Value = v
    StatusBar.Message2= v & "%"
Next
DataTables("工料月计划").ResumeRedraw
systemready = True


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