Foxtable(狐表)用户栏目专家坐堂 → 流水账的效率问题


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

主题:流水账的效率问题

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


加好友 发短信
等级:狐精 帖子:3361 积分:24808 威望:0 精华:0 注册:2012/3/26 21:47:00
流水账的效率问题  发帖心情 Post By:2016/5/26 9:20:00 [只看该作者]

按照帮助的做的流水账统计  现在数据太多 不想全部加载到本地  我将相关方法都换成了sql的  但是现在速度真是超级慢 一条记录要等4分钟才有结果

总记录大约有8千行左右

[此贴子已经被作者于2016/5/26 9:21:24编辑过]

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/5/26 9:22:00 [只看该作者]


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


加好友 发短信
等级:狐精 帖子:3361 积分:24808 威望:0 精华:0 注册:2012/3/26 21:47:00
  发帖心情 Post By:2016/5/26 9:26:00 [只看该作者]

好 试试


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


加好友 发短信
等级:狐精 帖子:3361 积分:24808 威望:0 精华:0 注册:2012/3/26 21:47:00
  发帖心情 Post By:2016/5/26 10:02:00 [只看该作者]

根据这个帮助 我发现全部加载时的余额和部分加载时的余额不一样


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


加好友 发短信
等级:狐精 帖子:3361 积分:24808 威望:0 精华:0 注册:2012/3/26 21:47:00
  发帖心情 Post By:2016/5/26 10:06:00 [只看该作者]

比如全部加载时计算的余额是80万 我什么都不加载  我新增一行 余额应该也是80万吧

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/5/26 10:07:00 [只看该作者]

以下是引用rjh4078在2016/5/26 10:02:00的发言:

根据这个帮助 我发现全部加载时的余额和部分加载时的余额不一样

 

请测试实例,实例如果没有问题,就是你代码写错


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


加好友 发短信
等级:狐精 帖子:3361 积分:24808 威望:0 精华:0 注册:2012/3/26 21:47:00
  发帖心情 Post By:2016/5/26 10:11:00 [只看该作者]

我和帮助的代码 就是这部分不一样

 

     
    Case "收入","支出","币种","账号"
        Dim dr As DataRow
        Dim drs As List(of DataRow)
        dr = e.DataTable.Find("[_SortKey] < " & e.DataRow("_SortKey") & " and 币种='" & e.DataRow("币种") & "' and 账号='" & e.DataRow("账号") & "'", "[_SortKey] Desc")  '找出上一行
        If dr Is Nothing Then  '如果没有找到上一行,说明本行就是第一行
            '计算之前的结存
            Dim jk As Double
            Dim ck As Double
            jk =  e.DataTable.SQLCompute("Sum(收入)","[_SortKey] < " & e.DataRow("_SortKey")  & " and 币种='" & e.DataRow("币种") & "' and 账号='" & e.DataRow("账号") & "'")
            ck =   e.DataTable.SQLCompute("Sum(支出)","[_SortKey] < " & e.DataRow("_SortKey")  & " and 币种='" & e.DataRow("币种") & "' and 账号='" & e.DataRow("账号") & "'")
            e.DataRow("余额") = e.DataRow("收入") - e.DataRow("支出") + jk -ck
            dr = e.DataRow
        End If
        drs =  e.DataTable.Select("[_SortKey] >= " & dr("_SortKey")  & " and 币种='" & e.DataRow("币种") & "' and 账号='" & e.DataRow("账号") & "'", "[_SortKey]")
        For i As Integer = 1 To drs.Count - 1  '重算余下行的余额
            drs(i)("余额") = drs(i-1)("余额") + drs(i)("收入") - drs(i)("支出")
        Next
       


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/5/26 10:19:00 [只看该作者]

 帮助文档,是根据_Sortkey排序计算的。你可以改成_Identify或者你的具体排序列。

 

 不会做,上传实例。


 回到顶部