以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  流水账的效率问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=85448)

--  作者:rjh4078
--  发布时间:2016/5/26 9:20:00
--  流水账的效率问题

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

总记录大约有8千行左右

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

--  作者:大红袍
--  发布时间:2016/5/26 9:22:00
--  

参考

 

http://www.foxtable.com/help/topics/2926.htm

 


--  作者:rjh4078
--  发布时间:2016/5/26 9:26:00
--  

好 试试


--  作者:rjh4078
--  发布时间:2016/5/26 10:02:00
--  

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


--  作者:rjh4078
--  发布时间:2016/5/26 10:06:00
--  
比如全部加载时计算的余额是80万 我什么都不加载  我新增一行 余额应该也是80万吧
--  作者:大红袍
--  发布时间:2016/5/26 10:07:00
--  
以下是引用rjh4078在2016/5/26 10:02:00的发言:

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

 

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


--  作者:rjh4078
--  发布时间: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
       


--  作者:大红袍
--  发布时间:2016/5/26 10:19:00
--  

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

 

 不会做,上传实例。