Foxtable(狐表)用户栏目专家坐堂 → 已知计划开始时间、计划完成时间以及计划工作量,如何求各月计划工作量


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

主题:已知计划开始时间、计划完成时间以及计划工作量,如何求各月计划工作量

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


加好友 发短信
等级:童狐 帖子:250 积分:1813 威望:0 精华:0 注册:2012/6/28 13:53:00
已知计划开始时间、计划完成时间以及计划工作量,如何求各月计划工作量  发帖心情 Post By:2017/8/20 21:45:00 [只看该作者]

已知计划开始时间、计划完成时间以及计划工作量,如何求各月计划工作量

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


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

参考代码

 

Dim sd As Date = "2017-06-08"
Dim ed As Date = "2017-10-19"
Dim count As Double = 1000
Dim sp As TimeSpan = ed-sd
Dim avg As Double = 1000 / (sp.TotalDays+1)

Dim i As Double = 0
Do While sd <= ed
    If sd.Day = 1 OrElse sd = ed Then
        output.show(format(sd.AddDays(-1), "yyyyMM") & " : " & i*avg)
        i = 1
    Else
        i += 1
    End If
    sd = sd.AddDays(1)
Loop


 回到顶部
帅哥哟,离线,有人找我吗?
chengjingliang
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:250 积分:1813 威望:0 精华:0 注册:2012/6/28 13:53:00
  发帖心情 Post By:2017/8/21 21:33:00 [只看该作者]

不知道从哪入手,请老师指教!
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:成本测算170816测试.rar


 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110574 积分:562760 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/8/21 22:14:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:成本测算.zip


 回到顶部
帅哥哟,离线,有人找我吗?
chengjingliang
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:250 积分:1813 威望:0 精华:0 注册:2012/6/28 13:53:00
  发帖心情 Post By:2017/8/22 2:38:00 [只看该作者]

计算结果存在误差,每月产值相加不等于计划产值总额,如何修改?

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110574 积分:562760 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/8/22 8:55:00 [只看该作者]

如果不能平分的数值自然存在误差,可以在最后一个月的数据进行求和比较一下,把误差补到最后一个月中

另外把相关列改为高精度

 回到顶部
帅哥哟,离线,有人找我吗?
chengjingliang
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:250 积分:1813 威望:0 精华:0 注册:2012/6/28 13:53:00
  发帖心情 Post By:2017/8/22 10:00:00 [只看该作者]

有没有其他好办法,比如建一个月份表,设置月份天数,好不好搞?

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


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

DataTables("表A").DataRows.Clear

MainTable = Tables("表A")

For Each r As Row In Tables("进度计划").Rows
    Dim sd As Date = r("计划开始")
    Dim ed As Date = 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("表A").AddNew
            dr("项目ID") = r("项目ID")
            dr("计划ID") = r("计划ID")
            dr("月份") = format(sd.AddDays(-1), "yyyyMM")
            If sd = ed Then
                dr("产值") = count-sum
            Else

                dr("产值") = i*avg
                sum += i*avg
            End If
            i = 1
        Else
            i += 1
        End If
        sd = sd.AddDays(1)
    Loop
Next


 回到顶部
帅哥哟,离线,有人找我吗?
chengjingliang
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:250 积分:1813 威望:0 精华:0 注册:2012/6/28 13:53:00
  发帖心情 Post By:2017/8/22 13:53:00 [只看该作者]

数据多时候,弹出下面提示,没法计算完全部数据

.NET Framework 版本:2.0.50727.5485
Foxtable 版本:2017.6.12.1
错误所在事件:窗口,窗口1,Button1,Click
详细错误信息:
添加或减去的值产生无法表示的 DateTime。
参数名: value
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:成本测算22.rar



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


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

DataTables("表A").DataRows.Clear
MainTable = Tables("表A")
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 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("表A").AddNew
            dr("项目ID") = r("项目ID")
            dr("计划ID") = r("计划ID")
            dr("月份") = format(sd.AddDays(-1), "yyyyMM")
            If sd = ed Then
                dr("产值") = count-sum
            Else
                dr("产值") = i*avg
                sum += i*avg
            End If
            i = 1
        Else
            i += 1
        End If
        sd = sd.AddDays(1)
    Loop
Next

 回到顶部