LayersGroupTableBuilder(层级)

Foxtbale使用LayersGroupTableBuilder类对层级型分级数据进行分组统计。

LayersGroupTableBuilder的属性有:

SourceTable DataTable类型,指定要统计的DataTable
PathCol 字符型,指定层级列。
NameCol 字符型,指定名称列。
Separator 字符型,指定层级列的分割符号
Lengths 整数型数组,如果层级列是按长度分割的,用于此属性指定层级列的各级长度。
GridTree 逻辑型,统计表是否默认开启折叠模式。
ExpandTo 整数型,指定折叠树默认展开到第几级。
OnlyGroupRows 逻辑型,统计表是否只保留分组行。
PreserveTo 逻辑型,指定统计统计表保留到第几级分组行。
Filter 字符型,指定统计条件。

LayersGroupTableBuilder通过AddTotal方法来增加统计列,AddTotal的语法有(最后两个语法用于添加记录数统计):

AddTotal(ColName, NewName)
AddTotal(ColName, NewName, AggregateRange)
AddTotal(ColName, NewName, AggregateRange, AggregateType)
AddTotal(True, NewName)
AddTotal(True, NewName, AggregateRange)

各参数说明:

ColName 字符型,指定要统计的数据列。
NewName 字符型,为生成的统计结果指定一个列名。
   
AggregateRange AggregateRange类型, 指定统计范围。
Self:仅统计本级数据
Sub:仅统计下级数据
Both:全部统计
默认为2.
   
AggregateType AggregateType类型,指定统计类型。
Sum:求和
Max:最大值
Min:最小值
Average:平均值
默认为求和

执行以下示例代码之前,请先打开CaseStudy目录下的示例文件: 分级数据.Table

示例一

选择表"销售B",在命令窗口执行下面的代码:

Dim st As new LayersGroupTableBuilder("统计表1")
st
.DataTable = DataTables("销售B")
st
.PathCol= "层级"
st
.NameCol = "员工"
st
.Separator = "."
st
.GridTree = True
st
.AddTotal(True,"订单数_本人",0)
st
.AddTotal(True,"订单数_团队")
st
.AddTotal("数量","销量_本人",0)
st
.AddTotal("数量","销量_团队")
st
.Build()
MainTable
= Tables("统计表1")

得到的统计结果为:

示例二

选择表"销售C",在命令窗口执行下面的代码:

Dim st As new LayersGroupTableBuilder("统计表1")
st
.DataTable = DataTables("销售C")
st
.PathCol= "级码"
st
.NameCol = "员工"
st
.Lengths= {2}
st
.GridTree = True
st
.AddTotal(True,"订单数")
st
.AddTotal("数量","数量")
st
.Build()
MainTable
= Tables("统计表1")

得到的统计结果为:

提示:可以分别指定各级长度,假定第一级的长度是1,第二级的长度是3,第三级开始长度为2,那么可以将长度设置代码改为:

st.Lengths= {
1,3,2}

示例三

选择表"销售D",在命令窗口执行下面的代码:

Dim st As new LayersGroupTableBuilder("统计表1")
st
.DataTable = DataTables("销售D")
st
.PathCol= "员工"
st
.Separator = "\"
st
.AddTotal("数量","数量")
st
.GridTree = True
st
.OnlyGroupRows = True
st
.ExpandTo = 1
st
.Build()
MainTable
= Tables("统计表1")

得到的统计结果为:


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