蓝老师,您好,
我要把orderlist中的列company 要相应带到表物料需求中,增加了以下黄色内容,可出现了如图的错误,麻烦帮忙一下,感谢。
按钮 :
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
Dim dic4 As new Dictionary(of String, Double)
vars("dic4") = dic4
For Each Ary As String() In DataTables("OrderList").GetValues("PartNo|ETD|批号|company","PartNo is not null")
Dim dr As DataRow = DataTables("物料需求").AddNew
dr("PartNo") = ary(0)
dr("Date") = ary(1)
dr("批号") = ary(2)
dr("company") = ary(3)
Dim qty As Decimal = DataTables("OrderList").Compute("sum(Qty)","PartNo='" & ary(0) & "' And ETD='" & ary(1) & "' and 批号 ='" & ary(2) & "'")
dr("Demand") = qty
Dim flag As Boolean = True
If dic1.ContainsKey(dr("PartNo")) Then
If dic1(dr("PartNo")) >= qty Then
dr("Stock") = qty
dic1(dr("PartNo")) -= dr("Stock")
flag = False
ElseIf dic1(dr("PartNo")) > 0 Then
dr("Stock") = dic1(dr("PartNo"))
dic1(dr("PartNo")) -= dr("Stock")
End If
End If
If dic2.ContainsKey(dr("PartNo")) Then
Dim qty1 = dr("Demand") - dr("stock")
If qty1 > 0 Then
If dic2(dr("PartNo")) >= qty1 Then
dr("QC") = qty1
dic2(dr("PartNo")) -= dr("QC")
ElseIf dic2(dr("PartNo")) > 0 Then
dr("QC") = dic2(dr("PartNo"))
dic2(dr("PartNo")) -= dr("QC")
End If
End If
End If
Dim drr As DataRow = DataTables("BOM").find("Fnumber =" &"'"& dr("PartNo")&"'")
If drr IsNot Nothing
dr("层次") = "父层"
Else
dr("层次") = "单件出货"
End If
Functions.Execute("sumChild",ary(0),qty, ary(0), ary(1),ary(2),ary(3),flag, dr("Stock"),dr("QC"),1,dr("Stock")+dr("QC")-qty)
If dic3.ContainsKey(dr("PartNo")) Then
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
End If
If flag = True Then
dr("MissingQty") = dr("Stock")+dr("QC") -dr("Demand")
Else
dr("MissingQty") = Nothing
End If
If dic4.ContainsKey(dr("PartNo")) = False Then
dic4.add(dr("PartNo"), dr("MissingQty"))
Else
dic4(dr("PartNo")) += dr("MissingQty")
End If
dr("SumMissing") = dic4(dr("partno"))
Next
For Each xm As String In DataTables("物料需求").GetValues("批号", "批号 is not null")
Dim fdr As DataRow = DataTables("Orderlist").find("批号='" & xm & "'")
If fdr Is Nothing Then fdr = DataTables("Orderlist").addnew
fdr("totalmaterialqty") = DataTables("物料需求").compute("sum(demand)", "批号='" & xm & "' and PartNo not in ('物理', '化学')")
Next
函数:
Dim pn As String = args(0)
Dim qty As String = args(1)
Dim idx As Decimal = args(8)
Dim dic1 = vars("dic1")
Dim dic2 = vars("dic2")
Dim dic3 = vars("dic3")
Dim dic4 = vars("dic4")
Dim m1 As Decimal = args(9)
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("company") = args(10)
ndr("Demand") = dr("FQty") * qty
ndr("层次") = "第" & idx & "层"
Dim mq As Decimal = m1 * dr("FQty")
Dim m2 As Decimal = args(6)+ args(7) - qty
Dim flag = args(5) ' And m1 < 0
If m1 <> 0 Then
If dic1.ContainsKey(ndr("PartNo")) Then
If m1 < 0 Then
Dim aa As Decimal = mq*-1
If dic1(ndr("PartNo")) >= aa Then
ndr("Stock") = aa
Else
ndr("Stock") = dic1(ndr("PartNo"))
End If
flag = False
ElseIf dic1(ndr("PartNo")) > 0 Then
ndr("Stock") = dic1(ndr("PartNo"))
End If
dic1(ndr("PartNo")) -= ndr("Stock")
If dic1(ndr("PartNo"))<0 Then dic1(ndr("PartNo")) = 0
End If
End If
If dic2.ContainsKey(ndr("PartNo")) Then
If flag = True And m1 > 0 Then
Dim qty1 = ndr("Demand") - ndr("stock")
If qty1 > 0 Then
If dic2(ndr("PartNo")) >= qty1 Then
ndr("QC") = qty1
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
ElseIf m1 < 0 Then
Dim aa As Decimal = mq*-1
If dic2(ndr("PartNo")) > aa - ndr("Stock")
ndr("QC") = aa - ndr("Stock")
Else
ndr("QC") = dic2(ndr("PartNo"))
End If
dic2(ndr("PartNo")) -= ndr("QC")
End If
End If
If flag = True And m1 > 0 Then
If dic3.ContainsKey(ndr("PartNo")) Then
Dim qty2 = ndr("Demand") - ndr("stock") - ndr("QC")
If qty2 > 0 Then
If dic3(ndr("PartNo")) >= qty2 Then
ndr("purchasingorder") = qty2
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
End If
End If
If flag = True AndAlso m1 > 0 Then
ndr("MissingQty") = ndr("Stock")+ndr("QC") -ndr("Demand")+args(6)*dr("FQty")
Else
If m1 < 0 AndAlso mq*-1 > ndr("Stock")+ndr("QC")
ndr("MissingQty") = mq + (ndr("Stock")+ndr("QC"))
Else
ndr("MissingQty") = 0
End If
End If
If dic4.ContainsKey(ndr("PartNo")) = False Then
dic4.add(ndr("PartNo"), ndr("MissingQty"))
Else
dic4(ndr("PartNo")) += ndr("MissingQty")
End If
ndr("SumMissing") = dic4(ndr("partno"))
Functions.Execute("sumChild",dr("PN"),ndr("Demand"), args(2), args(3), args(4),args(10),flag, ndr("Stock"),ndr("QC"),idx+1,ndr("MissingQty"))
Next
此主题相关图片如下:捕获.jpg