我测试只有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编辑过]