老师好,下面代码标出的计算结果不正确。
Select Case e.DataCol.Name
Case "姓名","购piao金额","中奖金额","付款金额"
Dim drs As List(of DataRow)
Dim Filter As String
Filter = "[_Identify] >= " & e.DataRow("_Identify") & " And [姓名] = '" & e.DataRow("姓名") & "'"
drs = e.DataTable.Select(Filter)
For i As Integer = 0 To drs.Count - 1
Dim dr = drs(i)
If i = drs.Count - 1 Then
Filter = "[_Identify] <= " & dr("_Identify") & " And [姓名] = '" & dr("姓名") & "'"
Dim Val1 As Double = e.DataTable.Compute("Sum(购piao金额)",Filter)
Dim Val2 As Double = e.DataTable.Compute("Sum(中奖金额)",Filter)
Dim Val3 As Double = e.DataTable.Compute("Sum(付款金额)",Filter)
dr("累计_购piao") = Val1
dr("累计_中奖") = Val2
dr("累计_付款") = Val3
Else
dr("累计_购piao") = Nothing
dr("累计_中奖") = Nothing
dr("累计_付款") = Nothing
End If
Next
If e.DataCol.Name = "姓名" AndAlso e.OldValue IsNot Nothing AndAlso e.OldValue <> e.NewValue Then
Filter = "[_Identify] > " & e.DataRow("_Identify") & " And [姓名] = '" & e.OldValue & "'"
drs = e.DataTable.Select(Filter)
For i As Integer = 0 To drs.Count - 1
Dim dr = drs(i)
If i = drs.Count - 1 Then
Filter = "[_Identify] <= " & dr("_Identify") & " And [姓名] = '" & dr("姓名") & "'"
Dim Val1 As Double = e.DataTable.Compute("Sum(购piao金额)",Filter)
Dim Val2 As Double = e.DataTable.Compute("Sum(中奖金额)",Filter)
Dim Val3 As Double = e.DataTable.Compute("Sum(付款金额)",Filter)
dr() = Val1
dr("累计_购piao") = Val2
dr("累计_中奖") = Val2
dr("累计_付款") = Val3
Else
dr("累计_购piao") = Nothing
dr("累计_中奖") = Nothing
dr("累计_付款") = Nothing
End If
Next
End If
Dim dr2 As DataRow = e.DataTable.Find("姓名 is not null","[_Identify] desc")
Dim V1 = e.DataTable.Compute("Sum(累计_购piao)","累计_购piao > 0")
Dim V2 = e.DataTable.Compute("Sum(累计_中奖)","累计_中奖 > 0")
Dim V3 = e.DataTable.Compute("Sum(累计_付款)","累计_付款 > 0")
e.DataTable.ReplaceFor("累计_结欠", Nothing)
dr2("累计_结欠") = V1 - V2 - V3
End Select