以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 流水帐是否可以根据不同的银行卡号来进行对应的收入 支出 余额的单独计算呢? (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=92170) |
-- 作者:李孝春 -- 发布时间:2016/10/27 20:47:00 -- 流水帐是否可以根据不同的银行卡号来进行对应的收入 支出 余额的单独计算呢? 求助:流水帐是否可以根据不同的银行卡号来进行对应的收入 支出 余额的单独计算呢? 比如卡号1 收入 支出 余额 比如卡号2 收入 支出 余额 下面的代码怎么改呢? Select Case e.DataCol.Name Case "收入","支出" Dim dr As DataRow Dim drs As List(of DataRow) dr = e.DataTable.Find("[_SortKey] < " & e.DataRow("_SortKey"), "[_SortKey] Desc") \'找出上一行 If dr Is Nothing Then \'如果没有找到上一行,说明本行就是第一行 e.DataRow("余额") = e.DataRow("收入") - e.DataRow("支出") dr = e.DataRow End If drs = e.DataTable.Select("[_SortKey] >= " & dr("_SortKey"), "[_SortKey]") For i As Integer = 1 To drs.Count - 1 \'重算余下行的余额 drs(i)("余额") = drs(i-1)("余额") + drs(i)("收入") - drs(i)("支出") Next End Select [此贴子已经被作者于2016/10/27 20:49:06编辑过]
|
-- 作者:有点蓝 -- 发布时间:2016/10/27 21:02:00 -- Select Case e.DataCol.Name Case "收入","支出" Dim dr As DataRow Dim drs As List(of DataRow) dr = e.DataTable.Find("[_SortKey] < " & e.DataRow("_SortKey") & " and 银行卡号=\'" & e.DataRow("银行卡号") & "\'", "[_SortKey] Desc") \'找出上一行 If dr Is Nothing Then \'如果没有找到上一行,说明本行就是第一行 e.DataRow("余额") = e.DataRow("收入") - e.DataRow("支出") dr = e.DataRow End If drs = e.DataTable.Select("[_SortKey] >= " & dr("_SortKey") & " and 银行卡号=\'" & e.DataRow("银行卡号") & "\'", "[_SortKey]") For i As Integer = 1 To drs.Count - 1 \'重算余下行的余额 drs(i)("余额") = drs(i-1)("余额") + drs(i)("收入") - drs(i)("支出") Next End Select
|
-- 作者:李孝春 -- 发布时间:2016/10/27 21:06:00 -- 回复:(有点蓝)Select Case e.DataCol.Name &... 谢谢! |
-- 作者:李孝春 -- 发布时间:2016/10/27 21:33:00 -- 回复:(有点蓝)Select Case e.DataCol.Name &... 新问题出现了 如果是 一行是001卡号 一行是002卡号 一行是001卡号 一行是002卡号 这样的不连续行数卡号 居然不会计算001 002各自最后的余额
|
-- 作者:有点蓝 -- 发布时间:2016/10/27 22:41:00 -- 看帮助中的第二个例子吧:http://www.foxtable.com/webhelp/scr/1572.htm 用Compute计算。
|
-- 作者:李孝春 -- 发布时间:2016/10/27 23:22:00 -- 回复:(有点蓝)看帮助中的第二个例子吧:http://www... 参照教程 已经实现 谢谢! 代码如下: Select Case e.DataCol.Name Case "收入","支出","银行卡卡号" Dim drs As List(of DataRow) Dim Filter As String Filter = "[_SortKey] >= " & e.DataRow("_SortKey") & "And [银行卡卡号] = \'" & e.DataRow("银行卡卡号") & "\'" drs = e.DataTable.Select(Filter) For Each dr As DataRow In drs Filter = "[_SortKey] <= " & dr("_SortKey") & " And [银行卡卡号] = \'" & e.DataRow("银行卡卡号") & "\'" Dim Val1 As Double = e.DataTable.Compute("Sum(收入)",Filter) Dim Val2 As Double = e.DataTable.Compute("Sum(支出)",Filter) dr("余额") = Val1 - Val2 Next If e.DataCol.Name = "银行卡卡号" AndAlso e.OldValue IsNot Nothing AndAlso e.OldValue <> e.NewValue Then Filter = "[_SortKey] > " & e.DataRow("_SortKey") & " And [银行卡卡号] = \'" & e.OldValue & "\'" drs = e.DataTable.Select(Filter) For Each dr As DataRow In drs Filter = "[_SortKey] <= " & dr("_SortKey") & " And [银行卡卡号]= \'" & e.DataRow("银行卡卡号") & "\'" Dim Val1 As Double = e.DataTable.Compute("Sum(收入)",Filter) Dim Val2 As Double = e.DataTable.Compute("Sum(支出)",Filter) dr("余额") = Val1 - Val2 Next End If End Select [此贴子已经被作者于2016/10/27 23:30:03编辑过]
|