Foxtable(狐表)用户栏目专家坐堂 → 代码效率太低,求助


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

主题:代码效率太低,求助

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/4/6 8:53:00 [显示全部帖子]

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

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

 

 


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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By: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")


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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/4/6 11:33:00 [显示全部帖子]

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

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


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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/4/6 11:51:00 [显示全部帖子]

期初不就是这个日期之前的入库减去这个日期之前的出库吗?

合并表的方法:遍历表A的每一行,从表B中找出编号相同的行,然后将这行某列的值写入表B中对应的行。

 

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

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/4/6 12:01:00 [显示全部帖子]

这种合并不存在效率问题。

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/4/6 14:18:00 [显示全部帖子]

最好还是用Select语句解决,建议你去csdn的SQL Server论坛问问,那里高手如云。

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/4/6 15:18:00 [显示全部帖子]

呵呵,既然已经高效解决问题了,那就算了吧,我也没有别的好办法。

通过这个帖子,我感受到老兄有非常明显的进步。

 

我只说一条:

 

DataTables("表C").DELETEFOR("")

 

可以改为:

 

DataTables("表C").DataRows.Clear()


 回到顶部