Foxtable(狐表)用户栏目专家坐堂 → [求助]库存消耗自动计算


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

主题:[求助]库存消耗自动计算

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


加好友 发短信
等级:一尾狐 帖子:422 积分:3430 威望:0 精华:0 注册:2015/5/20 8:44:00
[求助]库存消耗自动计算  发帖心情 Post By:2017/5/16 9:41:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:库存.xlsx


附件的排程附表是月排程安排,库存消耗附表是BOM明细,

零件号 零件名称 精英 豪华 尊享 库存 库存统计日期  预计消耗日期
A001   1 1 0 50 5.5  
A002   0 0 2 100 5.3  

想实现以下功能:

若库存消耗表的库存统计日期列=排程表的首行日期,那么从该日期开始计算零件的库存消耗,第二天消耗不完循环计算第三天,直至消耗结束,显示消耗结束的日期

如A001零件,5.5下班时统计的库存为:50,按照排程消耗,5.6消耗30*1+20*1=50,当日全部用完,则预计消耗日期为5.6

代码如何写
[此贴子已经被作者于2017/5/16 9:43:06编辑过]

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


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

没有看懂你那些关系,上传实例测试

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


加好友 发短信
等级:一尾狐 帖子:422 积分:3430 威望:0 精华:0 注册:2015/5/20 8:44:00
  发帖心情 Post By:2017/5/16 10:19:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.foxdb

例子
[此贴子已经被作者于2017/5/16 10:19:35编辑过]

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


加好友 发短信
等级:一尾狐 帖子:422 积分:3430 威望:0 精华:0 注册:2015/5/20 8:44:00
  发帖心情 Post By:2017/5/16 10:22:00 [只看该作者]

若库存消耗表中库存统计日期列=排程表的首行日期,那么从该日期开始计算零件的库存消耗(车型*BOM中的单车用量),第二天消耗不完(库存-第二天的车型*BOM中的单车用量>0)循环计算第三天,直至消耗结束(库存-第二天的车型*BOM中的单车用量-第三天的车型*BOM中的单车用量<=0),显示消耗结束的日期

如A001零件,统计日期:5.5,下班时统计的库存为50,

按照排程消耗(从5.5的第二天开始计算),5.6消耗30*1+20*1=50,50-50=0,当日全部用完,则预计消耗日期为5.6


[此贴子已经被作者于2017/5/16 10:27:36编辑过]

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/5/16 10:45:00 [只看该作者]

For Each dr As DataRow In DataTables("库存消耗").DataRows
    Dim fdr As DataRow = DataTables("排程").DataRows(0)
    Dim flag As Boolean = False
    Dim sum As Double = 0
    For Each dc As DataCol In fdr.DataTable.DataCols
        If flag Then
            For i As Integer = 1 To fdr.DataTable.DataRows.Count-1
                Dim cdr As DataRow = fdr.DataTable.DataRows(i)
                sum += val(dr(cdr("第一列"))) * val(cdr(dc.name))
            Next
            If sum >= dr("库存")
                dr("预计消耗日期") = fdr(dc.name)
                Exit For
            End If
        Else
            If fdr(dc) = dr("库存统计日期") Then
                flag = True
            End If         
        End If
    Next
   
Next

 回到顶部