以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  代码效率太低,求助  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=9391)

--  作者:lihe60
--  发布时间:2011/4/6 8:29:00
--  代码效率太低,求助
运行表B的窗口,效率太低,求助
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目2.table


--  作者:狐狸爸爸
--  发布时间:2011/4/6 8:53:00
--  

呵呵,有好多方法,有的可以快上几百倍,而且你恰好选择了最慢的。

我想先问一下,你用SQLCommand统计,是因为表C的数据没有全部加载吗?

 

 


--  作者:lihe60
--  发布时间:2011/4/6 9:23:00
--  

是的,因为表没有使用加载,所以才想用SQL

在表不加载的前提下,有什么其他更快的方法?


--  作者:狐狸爸爸
--  发布时间:2011/4/6 9:38:00
--  

1、用SQL语句,一行代码搞定:

 

DataTables("表B").Fill("Select 第一列, sum(第二列) As 小计 From {表C} Group by 第一列",True)

 

2、用FoxTable的统计工具:

 

Dim g As New GroupTableBuilder("统计表1", DataTables("表C"))
g.Groups.AddDef("第一列")
g.Totals.AddDef("第二列")
g.FromServer = True
g.Build()
MainTable = Tables("统计表1")


--  作者:lihe60
--  发布时间:2011/4/6 9:53:00
--  
我试试
--  作者:lihe60
--  发布时间:2011/4/6 11:07:00
--  

速度确实快了许多。

还有一个问题,我想计算某一期间,期初、期末、入库、出库,这样高效的SQL代码如何写?

窗口在表C中

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目2.rar

[此贴子已经被作者于2011-4-6 11:08:35编辑过]

--  作者:lihe60
--  发布时间:2011/4/6 11:15:00
--  
还可能是外部数据源。
--  作者:狐狸爸爸
--  发布时间:2011/4/6 11:33:00
--  

这种用SQL语句超出我的水平范围了,需要精通SQL语句的才行。

我只会有三个SQL语句分别求出期初,出库,入库,然后组合成一个表。


--  作者:lihe60
--  发布时间:2011/4/6 11:44:00
--  
以下是引用狐狸爸爸在2011-4-6 11:33:00的发言:

这种用SQL语句超出我的水平范围了,需要精通SQL语句的才行。

我只会有三个SQL语句分别求出期初,出库,入库,然后组合成一个表。

期初如何求,这三个数据,如何合成一个表?


--  作者:lihe60
--  发布时间:2011/4/6 11:46:00
--  

期末,我会通过代码实现的。