以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 流水帐相关 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=16358) |
-- 作者:jinruan -- 发布时间:2012/2/10 18:44:00 -- 流水帐相关 流水帐中要区分 帐户 DataColChanged事件为:
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 \'如果没有找到上一行,说明本行就是第一行 If e.DataRow("收付") = "收" Then e.DataRow("帐户余额") = e.DataRow("金额") End If If e.DataRow("收付") = "付" Then e.DataRow("帐户余额") = -e.DataRow("金额") End If dr = e.DataRow End If MessageBox.Show(dr("帐户")) drs = e.DataTable.Select("[_SortKey] >= " & dr("_SortKey") & " And [帐户] = " & dr("帐户") & "" ,"[_SortKey]") For i As Integer = 1 To drs.Count - 1 \'重算余下行的余额 If drs(i)("收付") = "收" Then drs(i)("帐户余额") = drs(i-1)("帐户余额") + drs(i)("金额") End If If drs(i)("收付") = "付" Then drs(i)("帐户余额") = drs(i-1)("帐户余额") - drs(i)("金额") End If Next End Select 更改金额时提示如下: [此贴子已经被作者于2012-2-10 18:46:27编辑过]
|
-- 作者:czy -- 发布时间:2012/2/10 18:49: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"), "[_SortKey] Desc") \'找出上一行 If dr Is Nothing Then \'如果没有找到上一行,说明本行就是第一行 If e.DataRow("收付") = "收" Then e.DataRow("帐户余额") = e.DataRow("金额") End If If e.DataRow("收付") = "付" Then e.DataRow("帐户余额") = -e.DataRow("金额") End If dr = e.DataRow End If MessageBox.Show(dr("帐户")) drs = e.DataTable.Select("[_SortKey] >= " & dr("_SortKey") & " And [帐户] = \'" & dr("帐户") & "\'" ,"[_SortKey]") For i As Integer = 1 To drs.Count - 1 \'重算余下行的余额 If drs(i)("收付") = "收" Then drs(i)("帐户余额") = drs(i-1)("帐户余额") + drs(i)("金额") End If If drs(i)("收付") = "付" Then drs(i)("帐户余额") = drs(i-1)("帐户余额") - drs(i)("金额") End If Next End Select |
-- 作者:jinruan -- 发布时间:2012/2/10 19:19: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 \'如果没有找到上一行,说明本行就是第一行 If e.DataRow("收付") = "收" Then e.DataRow("帐户余额") = e.DataRow("金额") End If If e.DataRow("收付") = "付" Then e.DataRow("帐户余额") = -e.DataRow("金额") End If dr = e.DataRow End If MessageBox.Show(dr("帐户")) drs = e.DataTable.Select("[_SortKey] >= \'" & dr("_SortKey") & "\' And [帐户] = \'" & dr("帐户") & "\'" ,"[_SortKey]") For i As Integer = 1 To drs.Count - 1 \'重算余下行的余额 If drs(i)("收付") = "收" Then drs(i)("帐户余额") = drs(i-1)("帐户余额") + drs(i)("金额") End If If drs(i)("收付") = "付" Then drs(i)("帐户余额") = drs(i-1)("帐户余额") - drs(i)("金额") End If Next End Select |