Foxtable(狐表)用户栏目专家坐堂 → 分页流水账的统计


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

主题:分页流水账的统计

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


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

不要用重置列,单独写一个代码计算,如

 

Dim dt As Datatable = DataTables("半成品流水")
Dim dic As new Dictionary(of String, Double)
For Each dr As DataRow In dt.Select("")
    Dim key = dr("半成品件号")
    If dic.ContainsKey(key) = False Then
        Dim dt1 As Integer = dt.sqlCompute("Sum(入库)","半成品件号 = '" & key & "'")
        Dim dt2 As Integer = dt.sqlCompute("Sum(出库)","半成品件号 = '" & key & "'")
        dr("库存") = dt1 - dt2
        dic.Add(key,  dt1 - dt2)
    Else
        dr("库存") = dic(key)
    End If
Next


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


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

关键是执行了多少次 sqlCompute 函数,每一次执行都是很耗时的。

 

或者试试改成下面这样,如果还是耗时,做具体实例发上来测试优化

 

systemready = false
Dim dt As Datatable = DataTables("半成品流水")
Dim dic As new Dictionary(of String, Double)
For Each dr As DataRow In dt.Select("")
    Dim key = dr("半成品件号")
    If dic.ContainsKey(key) = False Then
        Dim dt1 As Integer = dt.sqlCompute("Sum(入库)","半成品件号 = '" & key & "'")
        Dim dt2 As Integer = dt.sqlCompute("Sum(出库)","半成品件号 = '" & key & "'")
        dr("库存") = dt1 - dt2
        dic.Add(key,  dt1 - dt2)
    Else
        dr("库存") = dic(key)
    End If
Next
systemready = true


 回到顶部