百分比与统计

假定有下图所示的一个数据表:

希望按日期生成汇总模式,统计出每日的生产数、成品数和成品率:

显然,生产数和成品数,可以按常规统计出来,但是成品率却没有没办法直接统计得出,只能在得到生产数和成品数的统计结果后,据此计算得出成品率,代码如下:

Dim t As Table = Tables("订单")
Dim
g As Subtotalgroup
t
.SubtotalGroups.Clear()

g
= New Subtotalgroup
g.GroupOn = "日期"
g
.TotalOn = "生产数,成品数"
g.DateGroup = DateGroupEnum.Day
t
.SubtotalGroups.Add(g)

g = New Subtotalgroup
g.GroupOn = "*"
g
.TotalOn = "生产数,成品数"
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 Then
       
r("成品率") = r("成品数") / r("生产数")
    End If
Next

同样,如果要得到下图所示的分组统计结果:

也是没有办法直接分组统计得出的,但是可以利用分组统计得出生产数和成品数,然后在生成的统计表中增加一个表达式列,计算出成品率:

Dim g As New GroupTableBuilder("统计表1", DataTables("订单"))
g
.Groups.AddDef("日期", DateGroupEnum.None)
g
.Totals.AddDef("生产数")
g
.Totals.AddDef("成品数")
g
.VerticalTotal = True
g
.Build()
DataTables(
"统计表1").DataCols.Add("成品率",Gettype(Double),"成品数/生产数")
DataTables(
"统计表1").DataCols("成品率").SetFormat("#0.00%")
MainTable = Tables(
"统计表1")


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