Foxtable(狐表)用户栏目专家坐堂 → [求助]为什么这段代码执行起来这么吃力?


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

主题:[求助]为什么这段代码执行起来这么吃力?

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


加好友 发短信
等级:婴狐 帖子:67 积分:524 威望:0 精华:0 注册:2016/4/8 18:18:00
[求助]为什么这段代码执行起来这么吃力?  发帖心情 Post By:2017/10/9 13:35:00 [只看该作者]

代码:
Select Case e.DataCol.Name
    Case "AutoID"
        Dim dr As DataRow = DataTables("PODetails").SQLFind("AutoID= " & e.NewValue)
        e.DataRow("StyleID") = dr("StyleID")
        e.DataRow("PO") = dr("PO")
        e.DataRow("Model") = dr("Model")
        e.DataRow("Color") = dr("Color")
        e.DataRow("Material") = dr("Material")
        e.DataRow("Country") = dr("Country")
        '提取库存
        e.DataRow("RKSize1") = DataTables("TabRKBill").SQLCompute("Sum(Size1)","AutoID = " & e.NewValue)
        e.DataRow("CKSize1") = DataTables("TabCKBill").SQLCompute("Sum(Size1)","AutoID = " & e.NewValue)
        
        e.DataRow("RKSize2") = DataTables("TabRKBill").SQLCompute("Sum(Size2)","AutoID = " & e.NewValue)
        e.DataRow("CKSize2") = DataTables("TabCKBill").SQLCompute("Sum(Size2)","AutoID = " & e.NewValue)
        
        e.DataRow("RKSize3") = DataTables("TabRKBill").SQLCompute("Sum(Size3)","AutoID = " & e.NewValue)
        e.DataRow("CKSize3") = DataTables("TabCKBill").SQLCompute("Sum(Size3)","AutoID = " & e.NewValue)
        
        e.DataRow("RKSize4") = DataTables("TabRKBill").SQLCompute("Sum(Size4)","AutoID = " & e.NewValue)
        e.DataRow("CKSize4") = DataTables("TabCKBill").SQLCompute("Sum(Size4)","AutoID = " & e.NewValue)
        
        e.DataRow("RKSize5") = DataTables("TabRKBill").SQLCompute("Sum(Size5)","AutoID = " & e.NewValue)
        e.DataRow("CKSize5") = DataTables("TabCKBill").SQLCompute("Sum(Size5)","AutoID = " & e.NewValue)
        
        e.DataRow("RKSize6") = DataTables("TabRKBill").SQLCompute("Sum(Size6)","AutoID = " & e.NewValue)
        e.DataRow("CKSize6") = DataTables("TabCKBill").SQLCompute("Sum(Size6)","AutoID = " & e.NewValue)
        
        e.DataRow("RKSize7") = DataTables("TabRKBill").SQLCompute("Sum(Size7)","AutoID = " & e.NewValue)
        e.DataRow("CKSize7") = DataTables("TabCKBill").SQLCompute("Sum(Size7)","AutoID = " & e.NewValue)
        
        e.DataRow("RKSize8") = DataTables("TabRKBill").SQLCompute("Sum(Size8)","AutoID = " & e.NewValue)
        e.DataRow("CKSize8") = DataTables("TabCKBill").SQLCompute("Sum(Size8)","AutoID = " & e.NewValue)
        
        e.DataRow("RKSize9") = DataTables("TabRKBill").SQLCompute("Sum(Size9)","AutoID = " & e.NewValue)
        e.DataRow("CKSize9") = DataTables("TabCKBill").SQLCompute("Sum(Size9)","AutoID = " & e.NewValue)
End Select

选择AutoID之后,然后这一行等全部统计出来得2-3秒。。。
能不能做一些优化?


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


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

使用sqlFind、sqlCompute的效率本身就不高,你还使用那么多次。

 

尽量把 TabRKBill 的数据都加载出来,然后用 find、compute,这样效率会高一些。

 

即便根据条件先加载 TabRKBill 表的数据,然后find、compute,都比你连续使用sqlcompute要快


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


加好友 发短信
等级:婴狐 帖子:67 积分:524 威望:0 精华:0 注册:2016/4/8 18:18:00
回复:(有点甜)使用sqlFind、sqlCompute的效率本身就...  发帖心情 Post By:2017/10/9 14:34:00 [只看该作者]

哦,原来是这样子

好的,我改用别的方法试试。

 回到顶部