版主,是的,都包含,请见以下红色,并附上实例,谢谢了。
内部函数
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