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


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

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

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


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望: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编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
blackzhu
  12楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:狐仙 帖子:9875 积分:57590 威望:0 精华:15 注册:2008/9/1 9:45:00
  发帖心情 Post By:2013/9/26 16:26:00 [只看该作者]

老大  那我这个这个机器是够破的,

我一直想用狐表的自身方法,能用我在这边一直废话干嘛.问题是不行呀.

 回到顶部
帅哥哟,离线,有人找我吗?
blackzhu
  13楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:狐仙 帖子:9875 积分:57590 威望:0 精华:15 注册:2008/9/1 9:45:00
  发帖心情 Post By:2013/9/26 16:30:00 [只看该作者]

老大 机器破的一塌糊涂 你用0.1秒 我用3秒多.  另外 我本身就是在后台处理的.
[此贴子已经被作者于2013-9-26 16:32:07编辑过]

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


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2013/9/26 16:30:00 [只看该作者]

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

 回到顶部
帅哥哟,离线,有人找我吗?
blackzhu
  15楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:狐仙 帖子:9875 积分:57590 威望:0 精华:15 注册:2008/9/1 9:45:00
  发帖心情 Post By:2013/9/26 16:33:00 [只看该作者]

以下是引用狐狸爸爸在2013-9-26 16:30:00的发言:
老朱,我11楼的代码不就是用foxtable自身的优势做的吗?


  老大 我知道 我说的是 我能用狐表的优势的话 我早就用了,就不在这边废话了. 


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


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2013/9/26 16:39:00 [只看该作者]

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

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

 

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


 回到顶部
帅哥哟,离线,有人找我吗?
blackzhu
  17楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:狐仙 帖子:9875 积分:57590 威望:0 精华:15 注册:2008/9/1 9:45:00
  发帖心情 Post By:2013/9/26 16:44:00 [只看该作者]

老大 你看看一楼的代码:

我先生成统计表,再统计哦,不是例子里面直接写的.  不争了

Dim g As New GroupTableBuilder("统计表4", DataTables("管组民警数据"))
g.Groups.AddDef("统计部门")
g.Groups.AddDef("项目")
g.Groups.AddDef("报表名称")
g.Groups.AddDef("统计类型")
g.Groups.AddDef("数据统计项目")
g.Groups.AddDef("日期", DateGroupEnum.None)
g.Totals.AddDef("数据")
g.FromServer = True
g.Filter = Filter
g.Build()

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


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2013/9/26 16:56:00 [只看该作者]

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

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


 回到顶部
帅哥哟,离线,有人找我吗?
blackzhu
  19楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:狐仙 帖子:9875 积分:57590 威望:0 精华:15 注册:2008/9/1 9:45:00
  发帖心情 Post By:2013/9/26 17:07:00 [只看该作者]

以下是引用狐狸爸爸在2013-9-26 16:56:00的发言:

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

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



  我明白你的意思,上次你就提醒我了,但是我最终还是放弃了你给我的思路,就是你11楼给我的那个例子. 


  因为这个项目的统计有些变态,如果单纯是这样统计我早用了你方法.


    另外 我测试了你给我的代码,我第一次花的时间是3.5秒,第二次是花了1.7秒,你却只有花了0.1秒,速度快了17倍. 

    那原来上传的例子的代码你花了0.45秒,我花了约2秒,速度也是差不多4倍多,那就是我的电脑实在太慢了. 如果是这样的话 我是能接受的.   谢谢!  

[此贴子已经被作者于2013-9-26 17:07:06编辑过]

 回到顶部
总数 19 上一页 1 2