以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]计算  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=172847)

--  作者:江南小镇
--  发布时间:2021/11/3 14:50:00
--  [求助]计算
老师好,怎么会计算出来的结果不准确。



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



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

--  作者:有点蓝
--  发布时间:2021/11/3 15:32:00
--  

            drs(i)("结欠金额") = drs(i-1)("结欠金额") + drs(i)("盈亏") + drs(i)("付款金额")

--  作者:江南小镇
--  发布时间:2021/11/3 16:00:00
--  
老师,计算结果还是不准确

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:打票欠款.table


--  作者:y2287958
--  发布时间:2021/11/3 16:13:00
--  
测试结果哪里不准确?我看了一下,没发现问题


--  作者:有点蓝
--  发布时间:2021/11/3 16:17:00
--  
哪个数据有错?正确结果是怎样的?
--  作者:江南小镇
--  发布时间:2021/11/3 16:26:00
--  
老师,逻辑搞错了。
--  作者:有点蓝
--  发布时间:2021/11/3 16:31:00
--  
哦,然后呢
--  作者:江南小镇
--  发布时间:2021/11/3 16:37: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 \'如果没有找到上一行,说明本行就是第一行
            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

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


--  作者:有点蓝
--  发布时间:2021/11/3 16:49:00
--  
没看懂,逐行解释一下,然后给出正确结果说明
--  作者:江南小镇
--  发布时间:2021/11/3 17:13:00
--  
谢谢老师,好了。