以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  请教!代码优化?  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=130146)

--  作者:lk15502
--  发布时间:2019/1/14 16:25:00
--  请教!代码优化?
有两个表,一个“配缸表”,另一个“成品入库表”;两个表都有“缸号”列;加入“配缸表”产生10000个缸号;最后在“成品入库表”只有9000个缸号,想用代码把1000个没有入到“成品入库表”的缸号找出来,写了下面的代码,可以找到但是要10几秒时间,请老师帮我看看有更好的代码写法;谢谢!table5就是“配缸表”
Dim ghkt As WinForm.TextBox = e.Form.Controls("缸号开头")
Dim kcbs As String = DataTables("成品入库表").SQLGetComboListString("缸号","[缸号] like \'" & ghkt.text & "%\' and [缸号] is not null")
kcbs = "(\'" & kcbs.replace("|","\',\'") & "\')"
\'-------历遍成品入库表的缸号生成集合-------
DataTables(e.Form.Name & "_table5").LoadFilter = "_identify is not null"
DataTables(e.Form.Name & "_table5").Load
Dim ckbs As String = DataTables(e.Form.Name & "_table5").GetComboListString("缸号","[配缸] = 1 and [缸号] like \'" & ghkt.text & "%\' And [缸号] not In " & kcbs)
ckbs = "(\'" & ckbs.replace("|","\',\'") & "\')"
DataTables(e.Form.Name & "_table5").LoadFilter = "[缸号] in " & ckbs
DataTables(e.Form.Name & "_table5").Load


--  作者:有点甜
--  发布时间:2019/1/14 16:36:00
--  

尝试直接写sql语句,比如

 

Dim sql语句 = "select * from {配缸表} where 缸号 not in (select 缸号 from {成品入库表} where 缸号 is not null)"

Tables(e.Form.Name & "_table5").fill(sql语句,"数据源",false)


--  作者:lk15502
--  发布时间:2019/1/14 16:41:00
--  
甜老师,能写详细一点吗?没有写过SQL语句


--  作者:lk15502
--  发布时间:2019/1/14 17:02:00
--  
like怎么写到SQL


--  作者:有点甜
--  发布时间:2019/1/14 17:03:00
--  

比如

 

Dim sql语句 = "select * from {配缸表} where 缸号 not in (select 缸号 from {成品入库表} where 缸号 is not null and 缸号 like \'" & ghkt.text & "%\')"


--  作者:lk15502
--  发布时间:2019/1/14 17:30:00
--  
试了,真的很快!