Foxtable(狐表)用户栏目专家坐堂 → [求助] BOM 展开


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

主题:[求助] BOM 展开

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


加好友 发短信
等级:三尾狐 帖子:798 积分:5911 威望:0 精华:0 注册:2018/11/3 8:24:00
  发帖心情 Post By:2019/6/24 21:05:00 [显示全部帖子]

 

[此贴子已经被作者于2019/10/7 10:57:55编辑过]

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


加好友 发短信
等级:三尾狐 帖子:798 积分:5911 威望:0 精华:0 注册:2018/11/3 8:24:00
  发帖心情 Post By:2019/6/24 21:42:00 [显示全部帖子]

版主,是的,都包含,请见以下红色,并附上实例,谢谢了。

 

内部函数

Dim pn As String = args(0)
Dim qty As String = args(1)
Dim dic1 = vars("dic1")
Dim dic2 = vars("dic2")
Dim dic3 = vars("dic3")
For Each dr As DataRow In  DataTables("BOM").Select("FNumber='" & pn & "'")
    Dim ndr As DataRow = DataTables("物料需求").AddNew
    ndr("PartNo") = dr("PN")
    ndr("Date") = args(3)
    ndr("批号") = args(4)
    ndr("Demand") = dr("FQty") * qty
    Functions.Execute("sumChild",dr("PN"),ndr("Demand"), args(2), args(3), args(4))
    If dic1.ContainsKey(ndr("PartNo")) Then
        If dic1(ndr("PartNo")) >= ndr("Demand") Then
            ndr("Stock") = ndr("Demand")
            dic1(ndr("PartNo")) -= ndr("Stock")
        ElseIf dic1(ndr("PartNo")) >= 0 Then
            ndr("Stock") = dic1(ndr("PartNo"))
            dic1(ndr("PartNo")) -= ndr("Stock")
        End If
    End If

    If dic2.ContainsKey(ndr("PartNo")) Then
        If dic2(ndr("PartNo")) >= ndr("Demand") Then
            ndr("QC") = ndr("Demand")
            dic2(ndr("PartNo")) -= ndr("QC")
        ElseIf dic2(ndr("PartNo")) >= 0 Then
            ndr("QC") = dic2(ndr("PartNo"))
            dic2(ndr("PartNo")) -= ndr("QC")
        End If
    End If


    If dic3.ContainsKey(ndr("PartNo")) Then
        If dic3(ndr("PartNo")) >= ndr("Demand") Then
            ndr("purchasingorder") = ndr("Demand")
            dic3(ndr("PartNo")) -= ndr("purchasingorder")
        ElseIf dic3(ndr("PartNo")) >= 0 Then
            ndr("purchasingorder") = dic3(ndr("PartNo"))
            dic3(ndr("PartNo")) -= ndr("purchasingorder")
        End If
    End If

Next

 

按钮代码如下:

 

 

DataTables("物料需求").datarows.clear
Dim dic1 As new Dictionary(of String, Double)
For Each dr As DataRow In DataTables("库存表").Select("part is not null")
    dic1.add(dr("part"), dr("qty"))
Next
vars("dic1") = dic1

Dim dic2 As new Dictionary(of String, Double) 
For Each dr As DataRow In DataTables("待检产品").Select("part is not null") 
    dic2.add(dr("part"), dr("qty")) 
Next 
vars("dic2") = dic2 

Dim dic3 As new Dictionary(of String, Double) 
For Each dr As DataRow In DataTables("采购订单").Select("part is not null") 
    dic3.add(dr("part"), dr("qty")) 
Next 
vars("dic3") = dic3 


For Each Ary As String() In DataTables("OrderList").GetValues("PartNo|ETD|批号","PartNo is not null")
    Dim dr As DataRow = DataTables("物料需求").AddNew
    dr("PartNo") = ary(0)
    dr("Date") = ary(1)
    dr("批号") = ary(2)
    Dim qty As Integer = DataTables("OrderList").Compute("sum(Qty)","PartNo='" & ary(0) & "' And ETD='" & ary(1) & "' and 批号 ='" & ary(2) & "'")
    dr("Demand") = qty
    Functions.Execute("sumChild",ary(0),qty, ary(0), ary(1),ary(2))
    If dic1(dr("PartNo")) >= qty Then
        dr("Stock") = qty
        dic1(dr("PartNo")) -= dr("Stock")
    ElseIf dic1(dr("PartNo")) >= 0 Then
        dr("Stock") = dic1(dr("PartNo"))
        dic1(dr("PartNo")) -= dr("Stock")
    End If

    If dic2(dr("PartNo")) >= qty Then 
        dr("QC") = qty 
        dic2(dr("PartNo")) -= dr("QC") 
    ElseIf dic2(dr("PartNo")) >= 0 Then 
        dr("QC") = dic2(dr("PartNo"))  
        dic2(dr("PartNo")) -= dr("QC") 
    End If 


    If dic3(dr("PartNo")) >= qty Then 
        dr("purchasingorder") = qty 
        dic3(dr("PartNo")) -= dr("purchasingorder") 
    ElseIf dic3(dr("PartNo")) >= 0 Then 
        dr("purchasingorder") = dic3(dr("PartNo"))  
        dic3(dr("PartNo")) -= dr("purchasingorder") 
    End If 

Next

 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:颜色进度管理.foxdb


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


加好友 发短信
等级:三尾狐 帖子:798 积分:5911 威望:0 精华:0 注册:2018/11/3 8:24:00
  发帖心情 Post By:2019/6/25 15:20:00 [显示全部帖子]

谢谢,版主,终于学会了。结果正确了。

 

再接下来如何 将物料需求表中 0 这个数值去除 ? 

 

另外在列中SumMissing 中,如何求累计值? 如图

 

列MissingQty 中 1.AB_000065_AC 第一次的值是 -10,那么列中SumMissing 就求出 -10, 当这个物料在列MissingQty第二次的值 是-4,列SumMissing 中就把上次的-10 + 这次 的 -4 ,求出 -14,以次类推累计求值,再次麻烦版主了。附上实列。谢谢版主。


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


加好友 发短信
等级:三尾狐 帖子:798 积分:5911 威望:0 精华:0 注册:2018/11/3 8:24:00
  发帖心情 Post By:2019/6/25 15:20:00 [显示全部帖子]

 

[此贴子已经被作者于2019/6/26 19:42:28编辑过]

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


加好友 发短信
等级:三尾狐 帖子:798 积分:5911 威望:0 精华:0 注册:2018/11/3 8:24:00
  发帖心情 Post By:2019/6/25 18:53:00 [显示全部帖子]

谢谢版主,正确了。

 

经过分析,有一个逻辑我犯错了。正确应是

 

当列stock - Demand <0时, 列QC的值,才从待检产品中取出进行分配,补上所缺的数量。

当列stock +QC - Demand <0时, 列PurchasingOrder的值,才从采购订单中取出进行分配,补上所缺的数量。

 

再次麻烦版主帮忙,附上实例,谢谢。


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


加好友 发短信
等级:三尾狐 帖子:798 积分:5911 威望:0 精华:0 注册:2018/11/3 8:24:00
  发帖心情 Post By:2019/6/25 18:53:00 [显示全部帖子]


[此贴子已经被作者于2019/6/26 19:42:17编辑过]

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


加好友 发短信
等级:三尾狐 帖子:798 积分:5911 威望:0 精华:0 注册:2018/11/3 8:24:00
  发帖心情 Post By:2019/6/25 18:54:00 [显示全部帖子]


[此贴子已经被作者于2019/6/25 18:54:11编辑过]

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


加好友 发短信
等级:三尾狐 帖子:798 积分:5911 威望:0 精华:0 注册:2018/11/3 8:24:00
  发帖心情 Post By:2019/6/25 18:56:00 [显示全部帖子]

 

[此贴子已经被作者于2019/6/25 18:56:11编辑过]

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


加好友 发短信
等级:三尾狐 帖子:798 积分:5911 威望:0 精华:0 注册:2018/11/3 8:24:00
  发帖心情 Post By:2019/6/25 18:57:00 [显示全部帖子]

 

[此贴子已经被作者于2019/6/26 19:42:41编辑过]

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


加好友 发短信
等级:三尾狐 帖子:798 积分:5911 威望:0 精华:0 注册:2018/11/3 8:24:00
  发帖心情 Post By:2019/6/26 9:11:00 [显示全部帖子]

版主, 这次还请不厌其烦指导,这个实在是有点难度的。感谢。

 

[此贴子已经被作者于2019/6/26 19:41:53编辑过]

 回到顶部
总数 31 上一页 1 2 3 4 下一页