汇总模式之杂项

一般用户可以忽略本节内容

隐藏汇总模式下的非相关列

如果一个表有很多列,可能希望执行汇总模式后,能够隐藏非相关列,只显示分组列和统计列。
要实现这个目的,可以参考下面的代码:

Dim lst As New List(of String)
Dim
tbl As Table = Tables("订单")
For each
g As SubtotalGroup In tbl.SubtotalGroups
    For
Each s As string In g.Totalon.Split(",")
        If
lst.Contains(s) = False Then
            lst.Add(s)

        End
If
    Next
    If
lst.Contains(g.Groupon) = False Then
        lst.Add(g.GroupOn)

    End
If
Next
For Each
c As Col In tbl.Cols
    c.Visible = lst.Contains(c.Name)

Next

上面的代码很有意思的,这是帮助中少有的真正利用集合来编程的例子。

如果希望重新显示所有列,可以利用表视图,例如建立了一个包括所有列的表视图,名称为“默认视图”,可以直接执行下面的代码来显示所有列:

Tables("订单").OpenView("默认视图")

如果不想建立表视图,也可以使用下面的代码来显示所有列:

For Each c As Col In Tables("订单").Cols
    c.Visible = True

Next

自定义排序

在默认情况下,Subtotal方法会根据分组列进行排序,然后再生成汇总模式。
Subtotal有一个可选参数,如果将其设置为True,那么在生成汇总模式时,可以自定义排序参数,而不是根据分组列排序。
例如根据产品和客户排序,分组列为客户,统计列为数量与金额,生成汇总模式:

Dim t As Table = Tables("订单")
Dim
g As Subtotalgroup
t
.SubtotalGroups.Clear()
g = New Subtotalgroup
g
.GroupOn = "客户"
g
.TotalOn = "数量,金额"
t
.SubtotalGroups.Add(g)
g = New Subtotalgroup
g
.GroupOn = "*"
g
.TotalOn = "数量,金额"
t
.SubtotalGroups.Add(g)
t.Sort =
"产品,客户" '指定排序字段
t.Subtotal(
True) '生成汇总模式


本页地址:http://www.foxtable.com/webhelp/topics/3297.htm