以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [求助]流水账 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=91831) |
||||
-- 作者:苏州老街 -- 发布时间:2016/10/20 8:10:00 -- [求助]流水账 老师好,如果行等于零时下面代码计算出错。谢谢老师给予帮忙修改。 Select Case e.DataCol.Name Case "方向","收入金额","支出金额" 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(收入金额)",Filter) Dim Val2 As Double = e.DataTable.Compute("Sum(支出金额)",Filter) dr("累计收入") = Val1 dr("累计支出") = Val2 Else 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(收入金额)",Filter) Dim Val2 As Double = e.DataTable.Compute("Sum(支出金额)",Filter) dr("累计收入") = Val1 dr("累计支出") = Val2 Else dr("累计收入") = Nothing dr("累计支出") = Nothing End If Next End If End Select
|
||||
-- 作者:有点蓝 -- 发布时间:2016/10/20 8:41:00 -- 请上例子测试 |
||||
-- 作者:苏州老街 -- 发布时间:2016/10/20 9:24:00 -- 老师,好了。 |
||||
-- 作者:苏州老街 -- 发布时间:2016/10/20 9:39:00 -- 老师,我要另外增加一列"余额"列,余额=收入金额-支出金 额余列数据也是在最后一行显示 Select Case e.DataCol.Name Case "方向","收入金额","支出金额" 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(收入金额)",Filter) Dim Val2 As Double = e.DataTable.Compute("Sum(支出金额)",Filter) dr("累计收入") = Val1 dr("累计支出") = Val2 Else 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(收入金额)",Filter) Dim Val2 As Double = e.DataTable.Compute("Sum(支出金额)",Filter) dr("累计收入") = Val1 dr("累计支出") = Val2 Else dr("累计收入") = Nothing dr("累计支出") = Nothing End If Next End If End Select
|
||||
-- 作者:有点蓝 -- 发布时间:2016/10/20 9:55:00 -- Select Case e.DataCol.Name Case "方向","收入金额","支出金额" 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(收入金额)",Filter) Dim Val2 As Double = e.DataTable.Compute("Sum(支出金额)",Filter) dr("累计收入") = Val1 dr("累计支出") = Val2 dr("余额") = Val2 - Val1 Else dr("累计收入") = 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(收入金额)",Filter) Dim Val2 As Double = e.DataTable.Compute("Sum(支出金额)",Filter) dr("累计收入") = Val1 dr("累计支出") = Val2 dr("余额") = Val2 - Val1 Else dr("累计收入") = Nothing dr("累计支出") = Nothing dr("余额") = Nothing End If Next End If End Select
|
||||
-- 作者:苏州老街 -- 发布时间:2016/10/20 10:17:00 -- ![]() ![]() |
||||
-- 作者:苏州老街 -- 发布时间:2016/10/20 11:43:00 -- 老师,我要余额列数据显示在最后一行。
[此贴子已经被作者于2016/10/20 11:44:10编辑过]
|
||||
-- 作者:有点蓝 -- 发布时间:2016/10/20 11:43:00 -- Select Case e.DataCol.Name Case "方向","收入金额","支出金额" 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(收入金额)",Filter) Dim Val2 As Double = e.DataTable.Compute("Sum(支出金额)",Filter) dr("累计收入") = Val1 dr("累计支出") = Val2 Else 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(收入金额)",Filter) Dim Val2 As Double = e.DataTable.Compute("Sum(支出金额)",Filter) dr("累计收入") = Val1 dr("累计支出") = Val2 Else dr("累计收入") = Nothing dr("累计支出") = Nothing End If Next End If Dim dr2 As DataRow = e.DataTable.Find("方向 is not nothing","[_Identify] desc") Dim V1 = e.DataTable.Compute("Sum(累计收入)","累计收入 > 0") Dim V2 = e.DataTable.Compute("Sum(累计支出)","累计支出 > 0") e.DataTable.ReplaceFor("余额", Nothing) dr2("余额") = V2 - V1 End Select |
||||
-- 作者:苏州老街 -- 发布时间:2016/10/20 12:03:00 -- 老师,重置列报错 .NET Framework 版本:2.0.50727.3053 Foxtable 版本:2016.7.29.1 错误所在事件:表,表A, DataColChanged 详细错误信息: Exception has been thrown by the target of an invocation. Cannot find column [nothing]. |
||||
-- 作者:有点蓝 -- 发布时间:2016/10/20 14:17:00 -- 汗,后面的代码改为 Dim dr2 As DataRow = e.DataTable.Find("方向 is not null","[_Identify] desc") Dim V1 = e.DataTable.Compute("Sum(累计收入)","累计收入 > 0") Dim V2 = e.DataTable.Compute("Sum(累计支出)","累计支出 > 0") e.DataTable.ReplaceFor("余额", Nothing) dr2("余额") = V2 - V1 |