添加日期分组

在日常的数据管理中,我们经常要对不同时段之间的数据进行比较分析,例如不同月份、不同季度之间的数据比较。

假定我们要通过汇总模式,统计出各产品的每月销量和金额、各产品总的销量和金额、以及所有产品总的销量和金额,代码为:

Dim t As Table = Tables("订单")
t
.SubtotalGroups.Clear()
Dim
g As Subtotalgroup
'添加日期分组

g
= New Subtotalgroup
g
.GroupOn = "日期"
g
.TotalOn = "数量,金额"
g
.DateGroup = DateGroupEnum.Month  '按月分组,此行可省略,日期默认按月分组。
t
.SubtotalGroups.Add(g)
'添加产品分组

g
= New Subtotalgroup
g
.GroupOn = "产品"
g
.TotalOn = "数量,金额"
t
.SubtotalGroups.Add(g)
'添加总计分组

g
= New Subtotalgroup
g
.GroupOn = "*"
g
.TotalOn = "数量,金额"
t
.SubtotalGroups.Add(g)
t
.Subtotal()

得到的汇总模式如下:

提示:

根据日期型列进行分组的时候,日期分组必须位于所有分组之前。
如果有特别的要求,确实需要日期分组位于其它分组之后,可以考虑增加一个表达式列,用表达式取得日期的年、月、日,然后将该表达式列作为分组列使用。参考:

用表达式计算年月日

通过Subtotalgroup的DateGroup属性,可以指定日期分组方式,这是一个DateGroupEnum型枚举,包括以下可选值:

None:无
Year: 按年
Quarter:按季度
Month:按月
Week:按周
Day:按天
Hour:按小时
Minute:按分
Second:按秒

例如我们希望按年、月统计所有产品的销售数量和金额,代码为:

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 = "数量,金额"
g
.DateGroup = DateGroupEnum.Year '按年分组
t
.SubtotalGroups.Add(g)
'
添加总计分组
g
= New Subtotalgroup
g.GroupOn = "*"
g
.TotalOn = "数量,金额"
t
.SubtotalGroups.Add(g)
t
.Subtotal()

提示:日期的默认分组是按月,所以上述代码的第一个分组省略了设置DateGroup属性的代码。

得到的汇总模式如下:


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