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

得到的统计结果为:

过程很简单,但是得到的结果不是很美观。
下图的统计结果可能更符合大多数人的习惯:

要实现上面的统计结果,代码并不复杂:
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}”,这样执行这段代码后,会得到下图所示的汇总模式:

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