Rss & SiteMap
Foxtable(狐表) http://www.foxtable.com
'按月分析
Dim sql As String
If _UserGroup = "填报" Then '定义用户组
sql = "Select TOP 100 PERCENT 报表年月,日期,单位,Sum(加工费) As 加工费,Sum(投工) As 投工, Null as 月人均加工费 FROM {日报源表} WHERE 单位 = '" & _UserName & "' Group By 报表年月,日期,单位 ORDER BY 单位,日期,报表年月"
Else
sql = "Select TOP 100 PERCENT 报表年月,日期,单位,Sum(加工费) As 加工费,Sum(投工) As 投工, Null as 月人均加工费 FROM {日报源表} Group By 报表年月,日期,单位 ORDER BY 单位,日期,报表年月"
End If
Dim b As New GroupTableBuilder("按月分析",sql,"SCGL")
b.Groups.AddDef("日期", DateGroupEnum.Year, "年")
b.Groups.AddDef("日期", "月")
b.Groups.AddDef("单位")
b.Totals.AddDef("加工费")
b.Totals.AddDef("投工",AggregateEnum.Average,"月均人数")
b.Totals.AddDef("月人均加工费" ,AggregateEnum.Average)
b.SamePeriodGrowth = True '同比
b.CircleGrowth = True '环比
b.Build()
MainTable = Tables("按月分析")
Dim r As Table = Tables("按月分析")
If r("月均人数" ) <> 0 Then
r("月人均加工费" ) = r("加工费" )/r("月均人数" )
End If
DataTables("按月分析").DataCols("加工费").SetFormat("0.00")
DataTables("按月分析").DataCols("月均人数").SetFormat("0.00")
DataTables("按月分析").DataCols("月人均加工费").SetFormat("0.00")
Tables("按月分析").Cols("年").TextAlign = TextAlignEnum.Center
Tables("按月分析").Cols("月").TextAlign = TextAlignEnum.Center
Tables("按月分析").Cols("单位").TextAlign = TextAlignEnum.Center
Tables("按月分析").AutoSizeCols()
'打开表返回最末行
With Tables("按月分析")
.Position = .Rows.Count - 1
End With
你这点代码错得离谱了:
Dim r As Table = Tables("按月分析")
If r("月均人数" ) <> 0 Then
r("月人均加工费" ) = r("加工费" )/r("月均人数" )
End If
我想应该是:
For Each r As Row in Tables("按月分析").Rows
If r("月均人数" ) <> 0 Then
r("月人均加工费" ) = r("加工费" )/r("月均人数" )
End If
Next
谢谢狐爸老师的指教,代码修改好,也能执行,但是月人均加工费的同比和环比是空白,根据代码分析,在运算同比和环比时,月人均加工费还是空的,如何将同比和环比的运算,延迟到月人均加工费结果出来以后执行,请各位老师指教。谢谢!!
代码如下:
'按月分析
Dim sql As String
If _UserGroup = "填报" Then '定义用户组
sql = "Select TOP 100 PERCENT 报表年月,日期,单位,Sum(加工费) As 加工费,Sum(投工) As 投工, Null as 月人均加工费 FROM {日报源表} WHERE 单位 = '" & _UserName & "' Group By 报表年月,日期,单位 ORDER BY 单位,日期,报表年月"
Else
sql = "Select TOP 100 PERCENT 报表年月,日期,单位,Sum(加工费) As 加工费,Sum(投工) As 投工, Null as 月人均加工费 FROM {日报源表} Group By 报表年月,日期,单位 ORDER BY 单位,日期,报表年月"
End If
Dim b As New GroupTableBuilder("按月分析",sql,"SCGL")
b.Groups.AddDef("日期", DateGroupEnum.Year, "年")
b.Groups.AddDef("日期", "月")
b.Groups.AddDef("单位")
b.Totals.AddDef("加工费")
b.Totals.AddDef("投工",AggregateEnum.Average,"月均人数")
b.Totals.AddDef("月人均加工费" )
b.SamePeriodGrowth = True '同比
b.CircleGrowth = True '环比
b.Build()
MainTable = Tables("按月分析")
For Each r As Row In Tables("按月分析").Rows
If r("月均人数" ) <> 0 Then
r("月人均加工费" ) = r("加工费" )/r("月均人数" )
End If
Next
DataTables("按月分析").DataCols("加工费").SetFormat("0.00")
DataTables("按月分析").DataCols("月均人数").SetFormat("0.00")
DataTables("按月分析").DataCols("月人均加工费").SetFormat("0.00")
Tables("按月分析").Cols("年").TextAlign = TextAlignEnum.Center
Tables("按月分析").Cols("月").TextAlign = TextAlignEnum.Center
Tables("按月分析").Cols("单位").TextAlign = TextAlignEnum.Center
Tables("按月分析").AutoSizeCols()
'打开表返回最末行
With Tables("按月分析")
.Position = .Rows.Count - 1
End With
在帮助中是否有参考的章节。
这个没有,其实源流不复杂,环比就是同统计表找出上月的数据,和本月的数据一起计算出环比,然后写入新增加的列中。
增加列参考:
http://www.foxtable.com/help/topics/1428.htm