Foxtable(狐表)用户栏目专家坐堂 → 盘点核销代码优化


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

主题:盘点核销代码优化

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


加好友 发短信
等级:三尾狐 帖子:659 积分:5357 威望:0 精华:0 注册:2018/5/19 22:27:00
盘点核销代码优化  发帖心情 Post By:2018/9/25 10:58:00 [只看该作者]

以下是我这边盘点核销的部分代码逻辑。盘点单据的数据量 上万行;syms中符合条件的数据也有几万行。 这样我再执行下列代码是速度非常非常慢。请问有无优化 方案?
pd = DataTables("盘点单据").SQLFind("[盘点部门] = '" & yh("所属部门") & "'and [盘点单号] = '" & txt & "'")  '找出本次盘点单据的盘点数据
     DataTables("盘点单据").SQLReplaceFor("审核人", dr("姓名"), "[盘点部门] = '" & yh("所属部门") & "'and [盘点单号] = '" & txt & "'")  
     DataTables("盘点单据").SQLReplaceFor("审核日期", Date.Now, "[盘点部门] = '" & yh("所属部门") & "'and [盘点单号] = '" & txt & "'")  
     Dim syms As List(of DataRow) = DataTables("溯源码").SQLSelect("当前所在部门 = '" & yh("所属部门") & "' And 是否可用 = 1") '找到本部门可用溯源码的行
     For Each sym As DataRow In syms
            fr = DataTables("盘点单据").SQLFind("[溯源码] = '" & sym("子溯源码") & "'")  '溯源码表中的溯源码是否存在与盘点单据
                If fr IsNot Nothing Then 
                 sym("是否可用") = 1
                Else
                 Dim wb As Row = Tables("外部出库").AddNew()
                 sym("是否可用") = 0
                 wb("溯源码" ) = sym("子溯源码")
                 wb("出库部门") = sym("当前所在部门")
                 wb("出库时间") = Date.Now
                 wb("单据类型") = "销售单"
                 wb("是否拆箱") = sym("是否拆箱")
                 wb("出库人") = yh("姓名")
                 wb("核销人") = dr("姓名")
              End If
        Next


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/9/25 11:57:00 [只看该作者]

一般是这个代码慢

 

     For Each sym As DataRow In syms
            fr = DataTables("盘点单据").SQLFind("[溯源码] = '" & sym("子溯源码") & "'")  '溯源码表中的溯源码是否存在与盘点单据
 
每执行一次sqlFind,耗时一般是0.5秒,要耗时多少,你可以自己测算。
 
一般如果syms较多的情况下,都是把表【盘点单据】的数据全部加载出来,然后用find的。

 回到顶部