以文本方式查看主题 - 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"
平板上打的 可能有标点错误 思路是这样的 最好上个例子 谢谢,要先领会一下, |