以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]SQLCompute代码优化  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=59963)

--  作者:andy123
--  发布时间:2014/11/14 20:16:00
--  [求助]SQLCompute代码优化
之前是加载所有表,用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
--  发布时间: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
--  发布时间: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"

 

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



谢谢,要先领会一下,