以下是引用czy在2012-8-29 20:49:00的发言:
不知我理解的对不对?
DataTables("月报表").DataRows.Clear
Dim s As String = e.Form.Controls("月份").Value
If s <> "" Then
Dim n As Integer = e.Form.Controls("月份").Value
DataTables("月报表").DataRows.Clear
Dim Arys As List(Of String())
Arys = DataTables("入仓").GetUniqueValues("", "型号","规格")
For Each Ary As String() In Arys
Dim r As Row = Tables("月报表").AddNew
r("型号") = Ary(0)
r("规格") = Ary(1)
Next
For Each dr As DataRow In DataTables("月报表").DataRows
Dim s1 As String = "型号 = '" & dr("型号") & "' And 规格 = '" & dr("规格") & "' And 月份 = '" & s & "'"
Dim s2 As String = "型号 = '" & dr("型号") & "' And 规格 = '" & dr("规格") & "' And 月份 < " & n
Dim Sum,Sum1 As Double
dr("本月入仓_数量") = DataTables("入仓").Compute("Sum(入仓数量)",s1)
dr("本月入仓_金额") = DataTables("入仓").Compute("Sum(入仓金额)",s1)
dr("本月出仓_数量") = DataTables("出仓").Compute("Sum(出仓数量)",s1)
Sum = DataTables("入仓").Compute("Sum(入仓金额)",s2)
Sum1 = DataTables("入仓").Compute("Sum(入仓数量)",s2)
dr("上月结存_数量") = Sum1 - DataTables("出仓").Compute("Sum(出仓数量)",s2)
'-----------------------计算上月结存金额
dr("上月结存_金额") = Sum / Sum1 * dr("上月结存_数量")
'-----------------------
dr("本月加权平均单价") = (dr("上月结存_金额") + dr("本月入仓_金额"))/(dr("上月结存_数量") + dr("本月入仓_数量"))
dr("本月结存_数量") = dr("上月结存_数量") + dr("本月入仓_数量") - dr("本月出仓_数量")
dr("本月结存_金额") = dr("本月加权平均单价") * dr("本月结存_数量")
dr("本月出仓_金额") = dr("本月加权平均单价") * dr("本月出仓_数量")
Next
End If
初步测试,满足要求,我再好好消化代码移植到我的项目.非常感谢CZY.