以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]SQLGetComboListString执行效率问题 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=85333) |
-- 作者:huangfanzi -- 发布时间:2016/5/23 15:04:00 -- [求助]SQLGetComboListString执行效率问题 下面代码一开始用好好的,但数据多了后,就不能用了,表现为:过了好长时间窗口终于弹出来了,但月份的下拉框中没有内容,做了个试验,删除掉一些数据后,又能正常执行了,我感觉是执行效率上出了问题,有何办法替代这条语句功能?谢谢老师! 窗口:AfterLoad事件 |
-- 作者:大红袍 -- 发布时间:2016/5/23 15:06:00 -- 和这个语句无关,但是not in这样查询的话,肯定是很慢的
如果要用到两个表的数据,请使用连接查询得到合并的表 http://www.foxtable.com/help/topics/2473.htm
[此贴子已经被作者于2016/5/23 15:06:34编辑过]
|
-- 作者:huangfanzi -- 发布时间:2016/5/23 15:17:00 -- 查询慢点可以接受,可为什么就查不到了呢? |
-- 作者:大红袍 -- 发布时间:2016/5/23 15:27:00 -- 如果sql语句过长,比如你的字符已经超过了4000个,就有可能报错导致查找失败的。
建议,你还是用2楼的inner join把表数据连接一下。 |
-- 作者:huangfanzi -- 发布时间:2016/5/23 15:47:00 -- 老师,这个inner join不理解应该如何用到我现的情况,我说个例子,麻烦老师帮我写下语句 有二表 表1为销售报表,内容如下: 编号 品名 销售单价 1 A 10 2 B 9 3 C 8 表2为结算报表,要从表1中提取数据写入,但已经存在的不允许再写入,内容如下: 编号 品名 销售单价 销售折价 实际售价 1 A 10 1 9 2 B 9 2 7 现在做了个查询窗口,有个查询按钮,查询出数据后通过另一个按钮代码一条一条把查到的数据写入到表2,查询代码为: Tables(e.Form.Name & "_Table1").Fill("S elect 编号,品名,销售单价 From {表A} Where [编号] not In (\'" & DataTables("表B").SQLGetComboListString("编号").Replace("|", "\',\'") & "\') ","ShcsErpSql",True) 执行完上面代码后,窗口中的table中应该就只显示编号为3的数据。 上面的执行过程在数据不多时一切正常,现在几个月下来,数据多了,就开始出问题了。 这面这类模块在我目前用的项目中普遍存在,请老师给个代码例子,万分感谢! [此贴子已经被作者于2016/5/23 15:49:44编辑过]
|
-- 作者:大红袍 -- 发布时间:2016/5/23 15:52:00 -- Select 编号,品名,销售单价 F rom {表A} as a left join {表B} as b on a.编号 = b.编号 where b.编号 is null |