谢谢狐爸的指教,按照组合统计结果的案例,可以实现原定的目标要求,但是,对窗口感觉不爽,有点别扭,所以最后还是选用分组统计来生成统计表,可以达到同样的效果,同时感觉比较协调统一。现将两个方案的代码附下:
组合统计方案的代码:
Dim bd1 As New GroupTableBuilder("按月汇总",DataTables("日报源表"))
Dim dt1 As fxDataSource
bd1.Groups.AddDef("报表年月") '根据报表年月列用于分组
bd1.Groups.AddDef("单位") '根据单位列用于分组
bd1.Totals.AddDef("加工费") '添加加工费列用于统计
bd1.Totals.AddDef("投工","全员人数") '添加投工列用于统计
dt1 = bd1.BuildDataSource()
Dim bd2 As New GroupTableBuilder("按月汇总2",DataTables("按日汇总")) '根据代码生成的"按日汇总"统计表进行二次统计
Dim dt2 As fxDataSource
bd2.Groups.AddDef("报表年月") '根据报表年月列用于分组
bd2.Groups.AddDef("单位") '根据单位列用于分组
bd2.Totals.AddDef("全员人数",AggregateEnum.Average,"月均人数") '添加月均人数列用于统计
dt2 = bd2.BuildDataSource()
Dim nms As String() = {"报表年月","单位"} '指定连接列
dt1.Combine(nms,dt2,nms) '将按月汇总2数据组合到按月汇总数据
Tables("窗口1_Table1").DataSource = dt1 '将统计结果绑定到Table
With DataTables("窗口1_Table1").DataCols '用表达式列计算库存数据
.Add("日人均加工费",Gettype(Double),"iif(全员人数=0,null,加工费/全员人数)")
.Add("月人均加工费",Gettype(Double),"iif(月均人数=0,null,加工费/月均人数)")
End With
DataTables("窗口1_Table1").DataCols("加工费").SetFormat("0.00")
DataTables("窗口1_Table1").DataCols("月均人数").SetFormat("0.00")
DataTables("窗口1_Table1").DataCols("日人均加工费").SetFormat("0.00")
DataTables("窗口1_Table1").DataCols("月人均加工费").SetFormat("0.00")
分组统计方案的代码:
"按日汇总"
Dim b As New GroupTableBuilder("按日汇总",DataTables("日报源表"))
b.Groups.AddDef("报表年月") '根据报表年月列用于分组
b.Groups.AddDef("日期", DateGroupEnum.None) '添加日期列用于分组
b.Groups.AddDef("单位") '根据单位分组
b.Totals.AddDef("加工费") '添加加工费列用于统计
b.Totals.AddDef("投工","全员人数") '添加投工列用于统计
b.Build '生成按日汇总表
Dim t As Table = Tables("按日汇总")
t.DataTable.DataCols.Add("全员人均", Gettype(Double),"iif(全员人数=0,null,加工费/全员人数)")
MainTable = t '打开生成的按日汇总表
t.Position = t.Rows.Count - 1
DataTables("按日汇总").DataCols("加工费").SetFormat("0.00")
DataTables("按日汇总").DataCols("全员人均").SetFormat("0.00")
"按月汇总"
Dim b As New GroupTableBuilder("按月汇总",DataTables("按日汇总"))
b.Groups.AddDef("报表年月") '根据报表年月列用于分组
b.Groups.AddDef("单位") '根据单位列用于分组
b.Totals.AddDef("加工费") '添加加工费列用于统计
b.Totals.AddDef("全员人数") '添加投工列用于统计
b.Totals.AddDef("全员人数",AggregateEnum.Average,"月均人数") '添加月均人数列用于统计
b.Build '生成按月汇总表
Dim t As Table = Tables("按月汇总")
t.DataTable.DataCols.Add("日人均加工费", Gettype(Double),"iif(全员人数=0,null,加工费/全员人数)")
t.DataTable.DataCols.Add("月人均加工费", Gettype(Double),"iif(月均人数=0,null,加工费/月均人数)")
MainTable = t '打开生成的按月汇总表
t.Position = t.Rows.Count - 1
DataTables("按月汇总").DataCols("加工费").SetFormat("0.00")
DataTables("按月汇总").DataCols("月均人数").SetFormat("0.00")
DataTables("按月汇总").DataCols("日人均加工费").SetFormat("0.00")
DataTables("按月汇总").DataCols("月人均加工费").SetFormat("0.00")
在此,对热心帮助我的各位老师表示衷心的感谢!!
[此贴子已经被作者于2011-6-27 21:10:10编辑过]