Foxtable(狐表)用户栏目专家坐堂 → 关于流水账式表的计算效率问题求助(已解决)


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

主题:关于流水账式表的计算效率问题求助(已解决)

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/5/7 17:00:00 [显示全部帖子]

 这句,余量和分摊数量不应该写,改一下。

 

Select Case e.DataCol.Name
    Case "入库量","结存量","标识"


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/5/7 19:10:00 [显示全部帖子]

以下是引用jiterp在2014-5-7 18:49:00的发言:

我不能采用分页模式,因为这个表是用来计算库龄的,计算出结果后,会按照计算结果删除分摊数量<=0的数据,也就是说6万多行,到最后最多可能留下几千行数据的记录行。

 

六万多行,运算一次也不用半小时那么恐怖的。

 

你做个例子发上来测试一下。看5楼。然后看看下面帮助,加上停止执行的代码

 

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

 


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/5/7 21:32:00 [显示全部帖子]

 没办法,不能用datacolchanged,太慢了,直接计算吧。1-2分钟,等一下。

 

SystemReady = False
DataTables("表A").StopRedraw
Dim drs As List(of DataRow) = DataTables("表A").Select("", "标识")
Dim prevBZ As String = ""
For i As Integer = 0 To drs.Count - 1
    If drs(i)("标识") <> prevBZ Then
        Dim mr As DataRow = drs(i)
        mr("余量") = mr("结存量") - mr("入库量")
        If mr("余量") >= 0 Then
            mr("分摊数量") =  mr("入库量")
        Else
            mr("分摊数量") = mr("结存量")
        End If
        prevBZ = mr("标识")
    Else
        drs(i)("余量") = drs(i-1)("余量") - drs(i)("入库量")
        If drs(i)("余量") > = 0 Then
            drs(i)("分摊数量") = drs(i)("入库量")
        Else
            drs(i)("分摊数量") = drs(i-1)("余量")
        End If
    End If
Next
DataTables("表A").ResumeRedraw
SystemReady = True


 回到顶部