以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  流水帐相关  (http://www.foxtable.com/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

更改金额时提示如下:


图片点击可在新窗口打开查看此主题相关图片如下:1.jpg
图片点击可在新窗口打开查看



[此贴子已经被作者于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