以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  求教关于油耗平均值的算法  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=63056)

--  作者:ypp1420
--  发布时间:2015/1/13 9:05:00
--  求教关于油耗平均值的算法
甜版、bin版,各位高手早上好!我做了一个统计油耗的测试例子,每辆车每加一次油都有加油数量和单次加油里程!有个平均油耗列,里面列出了每次的平均油耗,我现在想统计没辆车1年的平均油耗,但是统计表统计出来的是每次平均油耗的平均值:比如加了2次油,第一次平均油耗是8,第二次是是10 那么统计出来的平均油耗是(8+10)/2 ,正确的统计方式应该是两次加的油的总量除以两次车辆行驶的里程数!我弄了好长时间也没有弄出来,查以前的帖子也没有查到相关记录,请各位大神帮帮忙!
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:油耗统计测试例子.zip




--  作者:有点甜
--  发布时间:2015/1/13 9:13:00
--  

Dim g As New GroupTableBuilder("统计表2", DataTables("表A"))
g.Groups.AddDef("材料名称")
g.Groups.AddDef("车型")
g.Groups.AddDef("车号")
g.Groups.AddDef("加油日期", DateGroupEnum.Year, "年")
g.Totals.AddDef("数量")
g.Totals.AddDef("单次里程统计")
g.Build()
DataTables("统计表2").DataCols.Add("单次平均油耗/k", Gettype(Double), "数量/单次里程统计")
MainTable = Tables("统计表2")

 


--  作者:ypp1420
--  发布时间:2015/1/13 9:23:00
--  
bin版,如果第一次加油加了50升,跑了125公里,第二次加了30升跑了60公里,那么两次的平均油耗分别是0.4/公里 和0.5/公里,按照统计表 (0.5+0.4)/2=0.45实际油耗是 80/185=0.43 您说的情况只在每次跑的 公里数相同的情况下才成立,也就是每次分母都一样的情况下!请BIN版主指导一把!不胜感激!
--  作者:Bin
--  发布时间:2015/1/13 9:26:00
--  
看2楼.
--  作者:有点甜
--  发布时间:2015/1/13 9:27:00
--  
  看2楼
--  作者:ypp1420
--  发布时间:2015/1/13 9:33:00
--  
图片点击可在新窗口打开查看谢谢甜版,bin版!刚刚没刷新!让你们费心啦!
--  作者:ypp1420
--  发布时间:2015/1/13 10:42:00
--  
甜版,按刚才我的例子加上您的指导,这个代码为什么不能生成图表呢?
Dim nf As WinForm.ComboBox = e.Form.Controls("输入年份")
Dim cx As WinForm.ComboBox = e.Form.Controls("输入车型")
\'--------------生成统计表----------------

Dim g As New GroupTableBuilder("统计表2", DataTables("表A"))
g.Groups.AddDef("材料名称")
g.Groups.AddDef("车型")
g.Groups.AddDef("车号")
g.Groups.AddDef("加油日期", DateGroupEnum.Year, "年")
g.Totals.AddDef("数量")
g.Totals.AddDef("单次里程统计")
g.Filter = "[车型] = \'" & cx.value & "\' And [加油日期] >= #1/1/ " & nf.value & "# And  [加油日期]<= #12/31/" & nf.value & "#"   \'动态表达式没有加单引号
g.Build()
DataTables("统计表2").DataCols.Add("单次平均油耗/k", Gettype(Double), "数量/单次里程统计")
MainTable = Tables("统计表2")
\'----------------生成图表--------------
Dim Chart As WinForm.Chart \'定义一个图表变量
Dim Series As WinForm.ChartSeries \'定义一个图系变量
Dim t As Table = Tables("统计表2") \'定义一个变量t引用数据表
Chart = e.Form.Controls("Chart1") \' 引用窗口中的图表
Chart.ChartType = ChartTypeEnum.Bar \'图表类型该为Bar(条形)
Chart.DataSource = "统计表2" \'设置绑定表
Chart.SeriesList.Clear() \'清除图表原来的图系
Series = Chart.SeriesList.Add() \'增加一个图系
Series.X.DataField = "车号" \'X轴绑定到产品列
Series.Y.DataField = "单次平均油耗/K" \'Y轴绑定到数量列
Series.DataLabelText = "{#YVAL}"


--  作者:有点甜
--  发布时间:2015/1/13 10:53:00
--  

Dim nf As WinForm.ComboBox = e.Form.Controls("输入年份")
Dim cx As WinForm.ComboBox = e.Form.Controls("输入车型")
\'--------------生成统计表----------------


Dim g As New GroupTableBuilder("统计表2", DataTables("表A"))
g.Groups.AddDef("材料名称")
g.Groups.AddDef("车型")
g.Groups.AddDef("车号")
g.Groups.AddDef("加油日期", DateGroupEnum.Year, "年")
g.Totals.AddDef("数量")
g.Totals.AddDef("单次里程统计")
If cx.Text > "" AndAlso nf.value > "" AndAlso cx.Text <> "请输入车型" AndAlso nf.Text <> "请输入年份" Then
    g.Filter = "[车型] = \'" & cx.value & "\' And [加油日期] >= #" & new Date(nf.value, 1, 1) & "# And  [加油日期]<= #" & new Date(nf.value, 12, 31) & "#"   \'动态表达式没有加单引号
End If
g.Build()
DataTables("统计表2").DataCols.Add("单次平均油耗", Gettype(Double), "Convert(数量/单次里程统计 * 100, \'System.Int64\') / 100 ", "单次平均油耗/K")
MainTable = Tables("统计表2")
\'----------------生成图表--------------
Dim Chart As WinForm.Chart \'定义一个图表变量
Dim Series As WinForm.ChartSeries \'定义一个图系变量
Dim t As Table = Tables("统计表2") \'定义一个变量t引用数据表
Chart = e.Form.Controls("Chart1") \' 引用窗口中的图表
Chart.ChartType = ChartTypeEnum.Bar \'图表类型该为Bar(条形)
Chart.DataSource = "统计表2" \'设置绑定表
Chart.SeriesList.Clear() \'清除图表原来的图系
Series = Chart.SeriesList.Add() \'增加一个图系
Series.X.DataField = "车号" \'X轴绑定到产品列
Series.Y.DataField = "单次平均油耗" \'Y轴绑定到数量列
Chart.AxisY.AnnoFormatString = "0.00"
Series.DataLabelText = "{#YVAL}"


--  作者:ypp1420
--  发布时间:2015/1/13 11:05:00
--  
图片点击可在新窗口打开查看甜版 你太给力啦!
--  作者:ypp1420
--  发布时间:2015/1/16 11:10:00
--  
甜版、bin版你们好,我想实现在窗口中添加一个table控件,table的“允许编辑”属性为false,运行后table表中的的所有列都不能编辑;我现在想实现可编辑表里面的其中一列,请问能否实现!