自己定义汇总模式

假定我们需要根据产品进行分组,统计每个产品的订单数,以及订购数量和订购金额。
按照常规,我们应该这样设置:

得到的统计结果为:

过程很简单,但是得到的结果不是很美观。

下图的统计结果可能更符合大多数人的习惯:

要实现上面的统计结果,代码并不复杂:

Dim t As Table = Tables("订单")
Dim
g As SubtotalGroup
t.SubtotalGroups.Clear
()
g = New SubtotalGroup
g.GroupOn =
"产品"
g.Caption = "{0}"
t.SubtotalGroups.Add(g)
t.Subtotal()

Dim r As Row
For
i As Integer = 0 To t.Rows.Count(True) - 1
    r = t.Rows(i,True)
    If
r.IsGroup '如果是分组行
        Dim
f As String = "产品 = '" & r("产品") &
"'"
       
Dim v As String = " 订单数:" & t.Compute("Count(日期)",f)
        v = v & " 订购数量:" & t.Compute("Sum(数量)",f)
        v = v & " 订购金额:" & t.Compute("Sum(金额)",f)
        r("产品") = "产品:" & r("产品") & v
    End
If
Next

上面的代码分成两部分,第一段设置汇总模式,需要注意的是,这里只是指定了分组列,没有指定统计列,同时分组标题简单设置为“{0}”,这样执行这段代码后,会得到下图所示的汇总模式:

然后第二段代码遍历所有行,如果是分组行,则计算出该分组的订单数、订购数量和订购金额,并填入到表中。


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