Foxtable(狐表)用户栏目专家坐堂 → 生成统计效率的问题


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

主题:生成统计效率的问题

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


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

最好用例子说话,瞎猜没意思。

数据保密不是理由,可以用a1、a2、a3代替。


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


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

我测试只有0.45秒,你就忍了吧,另外这样改一下,就只有0.1秒了,而且不管数据多大,速度差不了多少:

 

 

Dim dt As Date = Date.now
Dim g As New CrossTableBuilder("统计表1", DataTables("统计表4"))
g.HGroups.AddDef("统计部门")
g.HGroups.AddDef("报表名称")
g.HGroups.AddDef("项目")
g.HGroups.AddDef("统计类型")
g.HGroups.AddDef("数据统计项目")
g.VGroups.AddDef("日期", "{0}月")
g.Totals.AddDef("数据", "数据")
g.Build()
Tables("统计表1").StopRedraw
Dim ps As Integer = 5
For i As Integer = 1 To 12
    Dim nm As String = ""
    For Each dc As DataCol In DataTables("统计表1").DataCols
        If dc.Caption  = i & "月" Then
            nm = dc.name
        End If
    Next
    If nm = "" Then
        nm = i & "月"
        DataTables("统计表1").DataCols.Add(nm,Gettype(Double))
    End If
    Tables("统计表1").Cols(nm).Move(ps)
    ps = ps + 1
Next
Tables("统计表1").ResumeRedraw
MainTable = Tables("统计表1")
messagebox.show( (Date.now - dt).TotalSeconds )

 

你要充分利用foxtable现有的优势。

用这种方式,你还可以不用加载数据,直接在后台统计,只需将FromServer属性设置为True

[此贴子已经被作者于2013-9-26 16:21:26编辑过]

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


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

老朱,我11楼的代码不就是用foxtable自身的优势做的吗?

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


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

呵呵,老朱,你用的Compute,必须全部加载数据才行,根本就不可能后台实现。

记得用我给你的方法,否则数据一多,你就麻烦了。

 

还是不要争辩这些的,以后遇到问题,尽量用简单例子说话,这样可以快速帮你解决。


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


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

嗯,这样等于是统计了两次,可能你的第二次统计比第一次统计花的时间更多。

应该直接一次生成统计结果,再调整表统计表的结构,将没有的月份补上去。


 回到顶部