以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]库存消耗自动计算  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=100664)

--  作者:l1q2lq
--  发布时间: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编辑过]

--  作者:有点蓝
--  发布时间:2017/5/16 10:00:00
--  
没有看懂你那些关系,上传实例测试
--  作者:l1q2lq
--  发布时间:2017/5/16 10:19:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.foxdb

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

--  作者:l1q2lq
--  发布时间: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编辑过]

--  作者:有点色
--  发布时间: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