以文本方式查看主题
- Foxtable(狐表) (http://foxtable.com/bbs/index.asp)
-- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2)
---- [求助]后台查询代码效率 (http://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("\'", "\'\'") & "\',"
如果没有,本身代码不应该有问题的。
|