Foxtable(狐表)用户栏目专家坐堂 → 求助:信用卡可用额度计算问题


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

主题:求助:信用卡可用额度计算问题

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


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
求助:信用卡可用额度计算问题  发帖心情 Post By:2016/10/29 22:52:00 [只看该作者]

信用卡可用额度计算
当前一行的时候是:
收入—支出=余额
可用额度=额度+余额

不知道这样的设计是否符合逻辑啊?
但是怎么计算多行数据呢?多行数据的时候 额度是不是要累加呢?然后再加余额呢?

图片点击可在新窗口打开查看此主题相关图片如下:11111.png
图片点击可在新窗口打开查看
上述有一个不合理的地方
支出不应该大于当前可用余额,但是结果却出现了多次大于的情况,求解!

当前表事件代码如下:
Select Case e.DataCol.Name
    Case "余额"
        If e.DataRow("银行卡类别")="信用卡" Then
            e.DataRow("可用额度")=e.DataRow("额度")+e.DataRow("余额")
            If e.DataRow("可用额度")<0 Then
                MessageBox.Show("当前透支" & e.DataRow("可用额度") & "元")
            End If
        End If
        '(e.DataRow("收入")+e.DataRow("支出")))
    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/31 16:49:43编辑过]

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


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(李孝春)求助:信用卡可用额度计算问题  发帖心情 Post By:2016/10/31 16:51:00 [只看该作者]

各位老师多多指导啊  谢谢!

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


加好友 发短信
等级:超级版主 帖子:107880 积分:548763 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/10/31 17:39:00 [只看该作者]

没看懂你的意思

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


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点蓝)没看懂你的意思  发帖心情 Post By:2016/11/1 9:12:00 [只看该作者]

支出不应该大于当前可用余额,但是结果却出现了多次大于的情况,求解!

图片点击可在新窗口打开查看此主题相关图片如下:11.png
图片点击可在新窗口打开查看
图中 红色部分 可用余额小于支出 
  
信用卡可用余额是最后的刷卡额度  支出就不应该大于这个刷卡额度

收入(信用卡进账金额)
支出(刷卡金额)
额度(信用卡下卡额度)
可用额度(信用卡还可以刷卡的剩余额度)

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


加好友 发短信
等级:超级版主 帖子:107880 积分:548763 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/11/1 9:53:00 [只看该作者]

DataColChanging事件

Select Case e.DataCol.Name
    Case "支出"
        If e.DataRow.IsNull("支出") = False Then
            Dim Filter As String = "[_SortKey] < " & e.DataRow("_SortKey") & " And [银行卡卡号] = '" & e.DataRow("银行卡卡号") & "'"
            Dim dr As DataRow = e.DataTable.Find(Filter ,"[_SortKey] desc")
            If dr Is Nothing Then
                If e.NewValue > 25000 Then
                    msgbox("额度已超")
                    e.Cancel = True
                End If
            Else
                If e.NewValue > dr("可用额") Then
                    msgbox("额度已超")
                    e.Cancel = True
                End If
            End If
        End If
End Select

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


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点蓝)DataColChanging事件Select Case e.D...  发帖心情 Post By:2016/11/1 10:01:00 [只看该作者]

有点蓝老师  楼上代码是实现如果支出>25000 或者支出大于可用额度时候就提示已超出额度。
现在问题的关键是 为什么刚开始的时候都是正确的 后续会断断续续计算的值不等了,是不是在计算方法上有误呢?
我的计算是如下:
收入-支出=余额
可用额度=额度+余额
表中的数据都是按照银行账单对应一一录下来的,但是计算起来却不平衡
不知道有点蓝老师是否有更加合理的解决办法呢?
或者说是不是我的计算有误?

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


加好友 发短信
等级:二尾狐 帖子:573 积分:2961 威望:0 精华:0 注册:2016/10/27 14:33:00
  发帖心情 Post By:2016/11/1 10:40:00 [只看该作者]

 删除掉,重置列,重新计算一次。如果重置列计算正确,算法就应该是没错的。

 

 有可能是你在录入的过程中反复修改后导致的错误。


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


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点青) 删除掉,重置列,重新计算一次...  发帖心情 Post By:2016/11/1 16:35:00 [只看该作者]

支出这个是账单上的数据 所以是没有问题的  可用额度一般怎么理解呢? 
信用卡额度-(支出+收入)=可用额度?
信用卡额度-余额=可用额度?
貌似这两个理解没有不一样吧

不知道有点青老师 有没有办法噶!请多多指教

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


加好友 发短信
等级:超级版主 帖子:107880 积分:548763 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/11/1 17:42:00 [只看该作者]

确定账单录入的顺序是对的,或者中间没有缺少数据。如果数据确实是这样的,要问银行才行了,明显支出是远远超过额度了

 回到顶部