设有ABC三个厂区,需要填写日报
日报格式如下
厂区-日期(年-月-日)-数据1-数据2-数据3-数据4((数据2-数据3/数据1))
需要根据日报分别生成3个厂区的月报,月报中包含二次计算数据,
月报格式如下:
厂区(X年1-12月)的数据
厂区-年-月-SUN(数据1)-AVG(数据1)-AVG(数据2)-((AVG数据1-AVG数据2)/AVG数据1)
在根据月报,以及手填月报数据E
F G
生成年度分析报
厂区(1-12月)
厂区-年-月-手填数据E-AVG(数据1)/手填数据E-(【AVG数据1-AVG数据2)/AVG数据1】/手填数据E)
最后对ABC 三个厂区的每年12个月的数据进行同比环比
设计思路,目前试了三类方法:
1.新建一张表达式的正式月表,通过表达式对日报表进行计算;目前的问题是,不能自动按月求和,只能根据加载的数据,通过表达式计算,每次只能产生一条数据;
2.新建一张年度运行表的正式表,通过统计分组计算每月的数据,在通过命令填写进年度表,在通过两张表联合,将运行数据与填写数据加在一起生成一张新表;
问题是:每次都要先统计,在转填,如果日报有变化,转填的表数据不会自动更新,如果数据量较大,会引起误差;并且在测试阶段,总有两行数据会新增而不是重复填写,出现了BUG;
3.通过SQL查询日报,生成1-12月,但是无法对含有表达式的列进行查询;
4.通过统计分组的方法尝试生成临时的月报统计表,但是有计算列的总是在最后一栏,无法与前面同类型的列合并;
Dim g
As New GroupTableBuilder("统计表1", DataTables("污水厂月运行报表"))
g.Caption
= "统计表1"
g.Groups.AddDef("厂区编号")
g.Groups.AddDef("日期",
DateGroupEnum.Year, "年")
g.Groups.AddDef("日期",
"月")
g.Totals.AddDef("处理水量")
g.Totals.AddDef("处理水量",
AggregateEnum.Average)
g.Totals.AddDef("CODjin","COD_月进水总和")
g.Totals.AddDef("CODchu","COD_月出水总和")
g.Totals.AddDef("CODjin",AggregateEnum.Average,"COD_进水平均")
g.Totals.AddDef("CODchu",AggregateEnum.Average,"COD_出水平均")
g.Totals.AddDef("BOD5jin")
g.Totals.AddDef("BOD5jin",AggregateEnum.Average)
g.Totals.AddDef("BOD5jin",AggregateEnum.Max)
g.Totals.AddDef("BOD5jin",AggregateEnum.Min)
g.Totals.AddDef("BOD5chu")
g.Totals.AddDef("BOD5chu",AggregateEnum.Average)
g.Totals.AddDef("BOD5chu",AggregateEnum.Max)
g.Totals.AddDef("BOD5chu",AggregateEnum.Min)
g.Totals.AddDef("厂区用电")
g.Totals.AddDef("厂区用电",AggregateEnum.Average)
g.Totals.AddDef("厂区用电",AggregateEnum.Max)
g.Totals.AddDef("厂区用电",AggregateEnum.Min)
g.Totals.AddDef("湿污泥量")
g.Totals.AddDef("湿污泥量",AggregateEnum.Average)
g.Totals.AddDef("湿污泥量",AggregateEnum.Max)
g.Totals.AddDef("湿污泥量",AggregateEnum.Min)
g.Totals.AddDef("污泥含水率")
g.Totals.AddDef("污泥含水率",AggregateEnum.Average)
g.Totals.AddDef("污泥含水率",AggregateEnum.Max)
g.Totals.AddDef("污泥含水率",AggregateEnum.Min)
g.Totals.AddDef("绝干污泥量")
g.Totals.AddDef("绝干污泥量",AggregateEnum.Average)
g.Totals.AddDef("绝干污泥量",AggregateEnum.Max)
g.Totals.AddDef("绝干污泥量",AggregateEnum.Min)
g.Totals.AddDef("碳源A")
g.Totals.AddDef("碳源A",AggregateEnum.Average)
g.Totals.AddDef("碳源A",AggregateEnum.Max)
g.Totals.AddDef("碳源A",AggregateEnum.Min)
g.FromServer = True
g.Build()
DataTables("统计表1").DataCols.Add("COD_去除率",Gettype(Double),"(COD_月进水总和 - COD_月出水总和)/ COD_月出水总和")
DataTables("统计表1").DataCols("COD_去除率").SetFormat("#0.00%")
MainTable
= Tables("统计表1")
'Tables("窗口1_Table1").DataSource
= g.BuildDataSource()
通过哪种方式更能实现我的需求,请老师指导。