下面这段代码,红色代码没有注释掉时(单行计算时),dr("往年后三个月月平均用量"), dr("往年当月总用量"), dr("往年当月和后两月总用量"),dr("近12月平均值"),这几个都能算到值,如果注释掉,就是整表计算时,这几个值就都是0,但dr("同族料号")单行计算和整表计算,值都是一样的。这是怎么会事啊,吐血了。
For Each dr As DataRow In DataTables("库存界线表").DataRows
If dr("料号") <> "SSD0350011" Then
Continue For
End If
If dr("产品形态") = "金属零件" OrElse dr("产品形态") = "五金原料" Then
Dim lh As String = dr("料号")
Dim cls As new List(of String)
cls = DataTables("BOM及材料库存").SQLGetValues("F252","F257 = '" & lh & "' and F250 <> '成品'") '找出上级成品有几个料号
Dim tzlhs As new List(of String) '定义同族料号集合
Dim tzlhzds As new Dictionary(of String,Decimal) '定义料号用量字典
Dim yl As Decimal
If cls.Count > 0 Then
For Each cl As String In cls '上级成品料号加入同族集合
Dim lss As new List(of String())
lss = DataTables("BOM及材料库存").SQLGetValues("F257|F259|F255","F252 = '" & cl & "'") '找出下级物料有几个料号
If lss.Count = 1 Then
Dim lstzs As new List(of String)
lstzs = DataTables("BOM及材料库存").SQLGetValues("F252","F257 = '" & cl & "' and F250 <> '成品'") '找出上级成品有几个料号
If lstzs.Count < 1 Then
If tzlhs.Contains(cl) = False Then
tzlhs.Add(cl)
If tzlhzds.ContainsKey(lss(0)(0)) Then
yl = iif(yl > 0,lss(0)(1) / lss(0)(2) * tzlhzds(lss(0)(0)) * yl,lss(0)(1) / lss(0)(2) * tzlhzds(lss(0)(0)))
Else
yl = iif(yl > 0 ,lss(0)(1) / lss(0)(2) * yl, lss(0)(1) / lss(0)(2))
End If
tzlhzds.Add(cl,yl)
End If
Else
yl = iif(yl > 0 ,lss(0)(1) / lss(0)(2) * yl, lss(0)(1) / lss(0)(2))
Functions.Execute("同族顶层料号",tzlhs,lstzs,tzlhzds,yl) '找出成品料号的上级成品料号加入同族
End If
End If
Next
End If
If tzlhzds.Count > 0 Then
Dim stz As String = Nothing
Dim lskc As Decimal = 0
Dim lskc1 As Decimal = 0
Dim lskc2 As Decimal = 0
Dim lskc3 As Decimal = 0
For Each tzlh As String In tzlhzds.Keys
stz = tzlh & "|" & stz
Dim lsdr As DataRow = DataTables("库存界线表").SQLFind("料号 = '" & tzlh & "'")
If lsdr IsNot Nothing Then
lskc = lskc + lsdr("往年后三个月月平均用量") * tzlhzds(tzlh)
lskc1 = lskc1 + lsdr("往年当月总用量") * tzlhzds(tzlh)
lskc2 = lskc2 + lsdr("往年当月和后两月总用量") * tzlhzds(tzlh)
lskc3 = lskc3 + lsdr("近12月平均值") * tzlhzds(tzlh)
End If
Next
stz = IIF(stz IsNot Nothing, stz.TrimEnd("|"), Nothing)
dr("同族料号") = IIF(stz IsNot Nothing, stz, Nothing)
dr("往年后三个月月平均用量") = lskc
dr("往年当月总用量") = lskc1
dr("往年当月和后两月总用量") = lskc2
dr("近12月平均值") = lskc3
End If
End If
Next