Foxtable(狐表)用户栏目专家坐堂 → 流水帐公式


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

主题:流水帐公式

美女呀,离线,留言给我吧!
foxmis
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:1 积分:70 威望:0 精华:0 注册:2009/4/30 14:50:00
流水帐公式  发帖心情 Post By:2009/4/30 14:53:00 [只看该作者]

流水账:余额=收入-支出

DataColChanged代码哪里错了?
Dim i As Integer
If e.DataCol.Name = "收入" OrElse e.DataCol.Name = "支出" Then
    For Each dr As DataRow In e.DataTable.DataRows
        dr(0)("余额") = dr(0)("收入")-dr(0)("支出")
        For i = 1 to e.DataTable.DataRows.Count-1
            dr(i)("余额") = dr(i-1)("余额")+dr(i)("收入")-dr(i)("支出")
        Next
    Next
End If


[此贴子已经被狐狸爸爸于2009-4-30 15:30:42编辑过]

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2009/4/30 15:12:00 [只看该作者]

这是一个按日期的流水帐:

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目7.table


Select Case e.DataCol.Name
  Case "日期","收入","支出"
    If e.DataRow.Isnull("日期") = False Then
        For Each dr As DataRow In e.DataTable.Select("[日期] >= #" & e.DataRow("日期") & "#")
            Dim Val1 As Double =  e.DataTable.compute("Sum(收入)","[日期] <= #" & dr("日期") & "#")
            Dim Val2 As Double =  e.DataTable.compute("Sum(支出)","[日期] <= #" & dr("日期") & "#")
            dr("余额") = Val1 - Val2
        Next
    End If
End Select


[本帖被加为精华]
 回到顶部
帅哥哟,离线,有人找我吗?
wcs
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1039 积分:7450 威望:0 精华:0 注册:2008/8/31 22:52:00
  发帖心情 Post By:2009/4/30 16:11:00 [只看该作者]

流水账的余额一般是按顺序计算的,不全按日期。

准确地说是按行号的顺序来计算的。


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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2009/4/30 16:13:00 [只看该作者]

按输入顺序的,之前已经有了。


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


加好友 发短信 F6
等级:狐精 帖子:3036 积分:19229 威望:0 精华:2 注册:2008/9/1 7:50:00
  发帖心情 Post By:2009/4/30 19:41:00 [只看该作者]

以下是引用wcs在2009-4-30 16:11:00的发言:

流水账的余额一般是按顺序计算的,不全按日期。

准确地说是按行号的顺序来计算的。

日期 改成 _Identify 就可以了
更严格的做法是 日期 和 _Identify 一起来

[此贴子已经被作者于2009-4-30 19:41:43编辑过]

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


加好友 发短信
等级:五尾狐 帖子:1039 积分:7450 威望:0 精华:0 注册:2008/8/31 22:52:00
  发帖心情 Post By:2009/4/30 20:22:00 [只看该作者]

我想我要非得要说说了:

流水账应该根据TABLE中记录的顺序来计算(从上到下,不任主键大小),因为用户只想看根据查询到的记录生成的流水账。

而主键的顺序很可能与TABLE中的记录的顺序不同,如此计算的流水账,会让人不知所云!

另外,如果一天中有多条记录,那根据日期记录的流水账多半是错的,只是最后一行是正确的!

我见过早期的财务软件,很多有这样的BUG!感觉好像是“余额”列中的值错了行!


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


加好友 发短信
等级:婴狐 帖子:3 积分:134 威望:0 精华:0 注册:2008/9/6 11:37:00
  发帖心情 Post By:2009/5/1 0:24:00 [只看该作者]

能重排_Identify 就好了,这样一来按要求排序(例按日期排序)后重排_Identify 就能正确计算余额,雅奇mis就可以重排_Identify 的。

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2009/5/1 0:57:00 [只看该作者]

kylin说得对,同时根据日期和_Identify 计算即可。
[此贴子已经被作者于2009-5-1 0:56:47编辑过]

 回到顶部