DataTables("材料月结").DataRows.Clear
Dim Arys As List(Of String())
Arys = DataTables("材料明细").GetValues("月|材料","","月,材料") ',"月 >= '" & e.Form.Controls("起始月").Text & "' And 月 <= '" & e.Form.Controls("截止月").Text & "' ")
Dim clist As new Dictionary(of String,DataRow)
Dim dt As DataTable = DataTables("材料明细")
Dim prerow As DataRow
For Each Ary As String() In Arys
Dim dr As DataRow = DataTables("材料月结").AddNew
dr("月") = Ary(0)
dr("材料") = Ary(1)
Dim Filter As String = "材料 = '" & Ary(1) & "'"
If clist.ContainsKey(Ary(1)) Then
dr("上月结存_数量") = clist(Ary(1))("本月结存_数量")
dr("上月结存_金额") = clist(Ary(1))("本月结存_金额")
Else
Dim dr1 As DataRow = DataTables("期初").Find("材料='" & Ary(1) & "'")
If dr1 IsNot Nothing Then
dr("上月结存_数量") = dr1("期初数量")
dr("上月结存_金额") = dr1("期初金额")
End If
clist.Add(Ary(1),dr)
End If
dr("本月入仓_数量") = dt.Compute("Sum(入仓数量)",Filter & " And 月 = '" & dr("月") & "'")
dr("本月入仓_金额") = dt.Compute("Sum(入仓金额)",Filter & " And 月 = '" & dr("月") & "'")
dr("本月出仓_数量") = dt.Compute("Sum(出仓数量)",Filter & " And 月 = '" & dr("月") & "'")
dr("本月结存_数量") = dr("上月结存_数量") + dr("本月入仓_数量") - dr("本月出仓_数量")
dr("本月加权平均单价") = (dr("上月结存_金额") + dr("本月入仓_金额"))/(dr("上月结存_数量") + dr("本月入仓_数量"))
dr("本月出仓_金额") = dr("本月加权平均单价") * dr("本月出仓_数量")
dr("本月结存_金额") = dr("上月结存_金额") + dr("本月入仓_金额") - dr("本月出仓_金额")
clist(Ary(1)) = dr
Next