Foxtable(狐表)用户栏目专家坐堂 → [求助]SQLCompute代码优化


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

主题:[求助]SQLCompute代码优化

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


加好友 发短信
等级:小狐 帖子:322 积分:2680 威望:0 精华:0 注册:2014/6/24 17:29:00
[求助]SQLCompute代码优化  发帖心情 Post By:2014/11/14 20:16:00 [只看该作者]

之前是加载所有表,用Compute进行统计,很快只要200ms左右,现在全部改为SQLCompute,结果等了半小时都没反映。

Dim Sum1 As  Single
Dim Sum2 As  Single
Dim wlbm As String

For Each r1 As Row In Tables("物料信息表").Rows
wlbm = r1("物料编码")    
Sum1 = DataTables("出入库表").SQLCompute("Sum(数量)", "入库仓 = '外协仓' And [物料编码] = '" & wlbm & "'")
Sum2 = DataTables("出入库表").SQLCompute("Sum(数量)", "出库仓 = '外协仓' And [物料编码] = '" & wlbm & "'")
r1("外协仓") = Sum1-Sum2

Sum1 = DataTables("出入库表").SQLCompute("Sum(数量)", "入库仓 = '成品仓' And [物料编码] = '" & wlbm & "'")
Sum2 = DataTables("出入库表").SQLCompute("Sum(数量)", "出库仓 = '成品仓' And [物料编码] = '" & wlbm & "'")
r1("成品仓") = Sum1-Sum2

Sum1 = DataTables("出入库表").SQLCompute("Sum(数量)", "入库仓 = '电子仓' And [物料编码] = '" & wlbm & "'")
Sum2 = DataTables("出入库表").SQLCompute("Sum(数量)", "出库仓 = '电子仓' And [物料编码] = '" & wlbm & "'")
r1("电子仓") = Sum1-Sum2

Next

高手支个招啊?

注:物料信息表有2000行数据,这个数据每次会全部加载,出入库表数据每月有10000行以上。
[此贴子已经被作者于2014-11-14 20:17:47编辑过]

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


加好友 发短信
等级:狐精 帖子:3361 积分:24802 威望:0 精华:0 注册:2012/3/26 21:47:00
  发帖心情 Post By:2014/11/14 21:02:00 [只看该作者]

用sql语句吧

先建个查询窗口 加个表控件 然后把下面代码生成的数据表绑定过去 或者直接fill

dim cmd as new sqlcommand

cmd.数据源名称=

cmd.sql语句="select 物流编码,外协仓,成品仓,电子仓 from(select 物料编码,(select sum(数量)  from{出入库表} b where a.物料编码=b.物料编码 and b.入库仓='外协仓') -(select sum(数量)  from{出入库表} b where a.物料编码=b.物料编码 and b.出库仓='外协仓') as 外协仓,(select sum(数量)  from{出入库表} b where a.物料编码=b.物料编码 and b.入库仓='成品仓') -(select sum(数量)  from{出入库表} b where a.物料编码=b.物料编码 and b.出库仓='成品仓') as 成品仓,(select sum(数量)  from{出入库表} b where a.物料编码=b.物料编码 and b.入库仓='电子仓') -(select sum(数量)  from{出入库表} b where a.物料编码=b.物料编码 and b.出库仓='电子仓仓') as 电子仓 from{物料信息表} a) as b"

 

平板上打的 可能有标点错误 思路是这样的  最好上个例子


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


加好友 发短信
等级:小狐 帖子:322 积分:2680 威望:0 精华:0 注册:2014/6/24 17:29:00
  发帖心情 Post By:2014/11/15 7:38:00 [只看该作者]

以下是引用rjh4078在2014-11-14 21:02:00的发言:

用sql语句吧

先建个查询窗口 加个表控件 然后把下面代码生成的数据表绑定过去 或者直接fill

dim cmd as new sqlcommand

cmd.数据源名称=

cmd.sql语句="select 物流编码,外协仓,成品仓,电子仓 from(select 物料编码,(select sum(数量)  from{出入库表} b where a.物料编码=b.物料编码 and b.入库仓='外协仓') -(select sum(数量)  from{出入库表} b where a.物料编码=b.物料编码 and b.出库仓='外协仓') as 外协仓,(select sum(数量)  from{出入库表} b where a.物料编码=b.物料编码 and b.入库仓='成品仓') -(select sum(数量)  from{出入库表} b where a.物料编码=b.物料编码 and b.出库仓='成品仓') as 成品仓,(select sum(数量)  from{出入库表} b where a.物料编码=b.物料编码 and b.入库仓='电子仓') -(select sum(数量)  from{出入库表} b where a.物料编码=b.物料编码 and b.出库仓='电子仓仓') as 电子仓 from{物料信息表} a) as b"

 

平板上打的 可能有标点错误 思路是这样的  最好上个例子



谢谢,要先领会一下,


 回到顶部