Foxtable(狐表)用户栏目专家坐堂 → 求助:关于计算问题


  共有1208人关注过本帖树形打印复制链接

主题:求助:关于计算问题

帅哥哟,离线,有人找我吗?
李孝春
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
求助:关于计算问题  发帖心情 Post By:2017/1/11 15:54:00 [只看该作者]

求助:关于计算问题


图片点击可在新窗口打开查看此主题相关图片如下:额度计算求教.png
图片点击可在新窗口打开查看
额度等于固定额度+临时额度
余额=收入-支出
可用额度=额度-(收入+支出)
特么感觉我的可用额度是不对的 貌似计算方法不对
是不是应该是 
第一条数据后可用额度是4400
那么第二条收入15597 那么可用额度应该是15597+4400 而不是4402
是不是我的思路出现了错误呢?
我是不是应该采用余额的代码写法来实现可用额度的计算呢?

当前表事件代码如下:
Select Case e.DataCol.Name   

    Case "固定额度","临时额度"
        e.DataRow("额度")=e.DataRow("固定额度")+e.DataRow("临时额度")
        
    Case "余额"
        If e.DataRow("银行卡类别")="信用卡" Then
            e.DataRow("可用额度")=e.DataRow("额度")-(e.DataRow("收入")+e.DataRow("支出"))
            If e.DataRow("可用额度")<0 Then
                MessageBox.Show("当前透支" & e.DataRow("可用额度") & "元")
            End If
        End If
    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

烦请老师们多多指正,谢谢!
[此贴子已经被作者于2017/1/11 16:03:44编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点色
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/1/11 16:03:00 [只看该作者]

 1、先计算得出余额

 

 2、 可用额度,不就是等于 额度+余额 么?余额不是计算了收入和支出了么?


 回到顶部
帅哥哟,离线,有人找我吗?
李孝春
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点色)?1、先计算得出余额?&...  发帖心情 Post By:2017/1/11 16:09:00 [只看该作者]

谢谢有点色老师  已经解决了  
采用了下列代码:

Select Case e.DataCol.Name
    
    Case "固定额度","临时额度"
        e.DataRow("额度")=e.DataRow("固定额度")+e.DataRow("临时额度")
        
    Case "余额"
        If e.DataRow("银行卡类别")="信用卡" Then
            
            If e.DataRow("可用额度")<0 Then
                MessageBox.Show("当前透支" & e.DataRow("可用额度") & "元")
            End If
        End If
    Case "收入","支出","银行卡卡号","额度"
        
        Select Case e.DataCol.Name
            Case "银行卡卡号","收入","支出"
                Dim dr As DataRow
                Dim mr As DataRow = e.DataRow
                Dim drs As List(of DataRow)
                dr = e.DataTable.Find("[_SortKey] < " & mr("_SortKey") & " And [银行卡卡号] = '" & mr("银行卡卡号") & "'", "[_SortKey] Desc")
                If dr Is Nothing Then
                    mr("余额") = mr("收入") - mr("支出")
                    mr("可用额度") = mr("额度")+(mr("收入") - mr("支出"))
                    dr = mr
                End If
                drs = e.DataTable.Select("[_SortKey] >= " & dr("_SortKey") & " And [银行卡卡号] = '" & dr("银行卡卡号") & "'", "[_SortKey]")
                For i As Integer = 1 To drs.Count - 1
                    drs(i)("余额") = drs(i-1)("余额") + drs(i)("收入") - drs(i)("支出")
                    drs(i)("可用额度") = drs(i-1)("可用额度") + drs(i)("收入") - drs(i)("支出")
                Next
                If e.DataCol.Name = "银行卡卡号" AndAlso e.OldValue IsNot Nothing AndAlso e.OldValue <> e.NewValue Then
                    dr = e.DataTable.Find("[_SortKey] < " & mr("_SortKey") & " And [银行卡卡号] = '" & e.OldValue & "'", "[_SortKey] Desc")
                    If dr Is Nothing Then
                        dr = e.DataTable.Find("[银行卡卡号] = '" & e.OldValue & "'", "[_SortKey]")
                        If dr IsNot Nothing Then
                            dr("余额") = dr("收入") - dr("支出")
                        End If
                    End If
                    If dr IsNot Nothing Then
                        drs = e.DataTable.Select("[_SortKey] >= " & dr("_SortKey") & " And [银行卡卡号] = '" & dr("银行卡卡号") & "'", "[_SortKey]")
                        For i As Integer = 1 To drs.Count - 1
                            drs(i)("余额") = drs(i-1)("余额") + drs(i)("收入") - drs(i)("支出")
                            drs(i)("可用额度") = drs(i-1)("可用额度") + drs(i)("收入") - drs(i)("支出")
                        Next
                    End If
                End If
        End Select
End Select
[此贴子已经被作者于2017/1/11 16:34:41编辑过]

 回到顶部