以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  [求助]后台查询代码效率  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=105247)

--  作者:liuyixin662
--  发布时间:2017/8/15 14:35:00
--  [求助]后台查询代码效率

老师你好,后台查询代码加上下列代码后,时间比原来长了12秒,麻烦老师修改一下

For Each dr3 As DataRow In DataTables("销售订单未交_销售未交统计").DataRows
    Dim pr3 As DataRow = DataTables("产品信息表").sqlfind("产品编号=\'" & dr3("产品编号") & "\'")
    If pr3 IsNot Nothing Then
        dr3("材料编号") =pr3 ("材料编号")
        dr3("材料名称") =pr3 ("材料名称")
        dr3("规格型号") =pr3 ("规格型号")
        dr3("部件用料长度mm") =pr3 ("部件用料长度mm")
    End If
Next


--  作者:有点甜
--  发布时间:2017/8/15 14:37:00
--  

你的产品信息表数据量很大吗?为什么不加载全部后查询?

 

DataTables("产品信息表").loadfilter = ""
DataTables("产品信息表").load
For Each dr3 As DataRow In DataTables("销售订单未交_销售未交统计").DataRows
    Dim pr3 As DataRow = DataTables("产品信息表").find("产品编号=\'" & dr3("产品编号") & "\'")
    If pr3 IsNot Nothing Then
        dr3("材料编号") =pr3 ("材料编号")
        dr3("材料名称") =pr3 ("材料名称")
        dr3("规格型号") =pr3 ("规格型号")
        dr3("部件用料长度mm") =pr3 ("部件用料长度mm")
    End If
Next


--  作者:liuyixin662
--  发布时间:2017/8/15 14:45:00
--  
是的,我的产品信息表数据量很大
--  作者:有点甜
--  发布时间:2017/8/15 14:49:00
--  

Dim idxs As String = ""
For Each dr3 As DataRow In DataTables("销售订单未交_销售未交统计").DataRows
    idxs &= "\'" & dr3("产品编号") & "\',"
Next

Dim cmd As new SQLCommand
cmd.ConnectionName = "数据源名"
cmd.CommandText = "select * from {产品信息表} where 产品编号 in (\'" & idxs.trim(",") & "\')"
Dim dt As DataTable = cmd.ExecuteReader
For Each dr3 As DataRow In DataTables("销售订单未交_销售未交统计").DataRows
    Dim pr3 As DataRow = dt.find("产品编号=\'" & dr3("产品编号") & "\'")
    If pr3 IsNot Nothing Then
        dr3("材料编号") =pr3 ("材料编号")
        dr3("材料名称") =pr3 ("材料名称")
        dr3("规格型号") =pr3 ("规格型号")
        dr3("部件用料长度mm") =pr3 ("部件用料长度mm")
    End If
Next


--  作者:liuyixin662
--  发布时间:2017/8/15 14:58:00
--  
DataTables("销售订单未交_销售未交统计") 是从5个表的数据中提取的,没有加上代码时  ,用时是8秒
--  作者:有点甜
--  发布时间:2017/8/15 15:00:00
--  
4楼的代码耗时多少?如果也太耗时,你就需要把 【销售订单未交_销售未交统计】 改成后台表,直接和产品表连接查询得到结果。
--  作者:liuyixin662
--  发布时间:2017/8/15 15:39:00
--  
语法错误
图片点击可在新窗口打开查看此主题相关图片如下:语法错误.bmp
图片点击可在新窗口打开查看

--  作者:有点甜
--  发布时间:2017/8/15 15:42:00
--  

你的产品编号有单引号?如果有修改代码

 

idxs &= "\'" & dr3("产品编号").replace("\'", "\'\'") & "\',"

 

如果没有,本身代码不应该有问题的。