Foxtable(狐表)用户栏目专家坐堂 → [求助]SQLGetComboListString执行效率问题


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

主题:[求助]SQLGetComboListString执行效率问题

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


加好友 发短信
等级:五尾狐 帖子:1104 积分:8956 威望:0 精华:0 注册:2014/10/25 11:24:00
[求助]SQLGetComboListString执行效率问题  发帖心情 Post By:2016/5/23 15:04:00 [只看该作者]

下面代码一开始用好好的,但数据多了后,就不能用了,表现为:过了好长时间窗口终于弹出来了,但月份的下拉框中没有内容,做了个试验,删除掉一些数据后,又能正常执行了,我感觉是执行效率上出了问题,有何办法替代这条语句功能?谢谢老师!


窗口:AfterLoad事件

e.Form.Controls("CheckedComboBox_月份").Combolist = _dt工序合并表.SQLGetComboListString("月份","起始时间 >= '2016-1-1 00:00:00' And [记录标记1] not in ('" & DataTables("成本核算主表B").SQLGetComboListString("工序记录标记").Replace("|", "','") & "')","起始时间")

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/5/23 15:06:00 [只看该作者]

和这个语句无关,但是not in这样查询的话,肯定是很慢的

 

如果要用到两个表的数据,请使用连接查询得到合并的表 http://www.foxtable.com/help/topics/2473.htm

 

[此贴子已经被作者于2016/5/23 15:06:34编辑过]

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


加好友 发短信
等级:五尾狐 帖子:1104 积分:8956 威望:0 精华:0 注册:2014/10/25 11:24:00
  发帖心情 Post By:2016/5/23 15:17:00 [只看该作者]

查询慢点可以接受,可为什么就查不到了呢?

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/5/23 15:27:00 [只看该作者]

 如果sql语句过长,比如你的字符已经超过了4000个,就有可能报错导致查找失败的。

 

 建议,你还是用2楼的inner join把表数据连接一下。


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


加好友 发短信
等级:五尾狐 帖子:1104 积分:8956 威望:0 精华:0 注册:2014/10/25 11:24:00
  发帖心情 Post By: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编辑过]

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/5/23 15:52:00 [只看该作者]

Select 编号,品名,销售单价 F rom {表A} as a left join {表B} as b on a.编号 = b.编号 where b.编号 is null

 回到顶部