以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  占比生成图表问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=91143)

--  作者:douglas738888
--  发布时间:2016/9/30 11:57:00
--  占比生成图表问题

请教老师,如果形成临时统计表后,只提取占比部分生成图表,怎样操作,用GDR吗?给个代码例子参考,谢谢

 

如果不绑定表,只用最后一行的合计行的占比,怎样能生成图表?

[此贴子已经被作者于2016/9/30 12:54:04编辑过]

--  作者:有点蓝
--  发布时间:2016/9/30 14:09:00
--  
参考:http://www.foxtable.com/webhelp/scr/0967.htm

看方法一

--  作者:douglas738888
--  发布时间:2016/9/30 14:37:00
--  

蓝老师,我根据您指导的代码修改了一下,有点问题,只会显示第一和第二个图系,如果加上第三个图系的代码,就只显示第二个图系的一个BAR,

Dim Chart As WinForm.Chart \'定义一个图表变量
Dim Series As WinForm.ChartSeries \'定义一个图系变量
Dim t As Table = Tables("投标评价_Table2") \'定义一个变量t引用数据表
Chart = e.Form.Controls("Chart1") \' 引用窗口中的图表
Chart.VisualEffect = True \'加上这一行,让你的图表更漂亮
Chart.ChartType = ChartTypeEnum.Bar   \'图表类型该为Bar(条形)
\'Chart.DataSource = "统计表1" \'设置绑定表
Chart.AxisY.Text = "报价频率(次)"
Chart.SeriesList.Clear() \'清除图表原来的图系

Series = Chart.SeriesList.Add() \'增加一个图系
Series.Length =  t.Rows.Count  \'图系的数据点数等于表的行数
Series.Text = "最低价"
For i As Integer = t.Count - 1 To t.Count - 1 \'指定每个数据点的位置
    Series.X(i) = i \'指定水平坐标
    Series.Y(i) = t.Rows(i)("投标执行_投标报价_最低") \'指定垂直坐标
    Chart.AxisX.SetValueLabel(i, t.Rows(i)("项目属地"))
Series.DataLabelText = "{#YVAL}"
Next

Series = Chart.SeriesList.Add() \'增加第二个图系
Series.Text = "次低"
Series.Length =  t.Rows.Count  \'图系的数据点数等于表的行数
For i As Integer = t.Count - 1 To t.Count - 1 \'指定每个数据点的位置
    Series.X(i) = i \'指定水平坐标
    Series.Y(i) = t.Rows(i)("投标执行_投标报价_次低") \'指定垂直坐标
    Chart.AxisX.SetValueLabel(i, t.Rows(i)("项目属地"))
Series.DataLabelText = "{#YVAL}"
Next

Series = Chart.SeriesList.Add() \'增加第三个图系
Series.Text = "中间"
Series.Length =  t.Rows.Count  \'图系的数据点数等于表的行数
For i As Integer = t.Count - 1 To t.Count - 1 \'指定每个数据点的位置
    Series.X(i) = i \'指定水平坐标
    Series.Y(i) = t.Rows(i)("投标执行_投标报价_中间") \'指定垂直坐标
    Chart.AxisX.SetValueLabel(i, t.Rows(i)("项目属地"))
Series.DataLabelText = "{#YVAL}"
Next

 


此主题相关图片如下:未标题-1.jpg
按此在新窗口浏览图片


 请老师看看例子

 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:测试.zip

[此贴子已经被作者于2016/9/30 15:27:27编辑过]

--  作者:有点蓝
--  发布时间:2016/9/30 16:00:00
--  
Dim b As New SQLGroupTableBuilder("统计表00004","投标评价")  \'20160930
b.C
b.Groups.AddDef("项目属地")
b.Groups.AddDef("投标结果")

b.Totals.AddExp("投标执行_投标报价_最低","投标执行_投标报价_最低*-1","投标报价_最低",AggregateEnum.Sum)
b.Totals.AddExp("投标执行_投标报价_次低","投标执行_投标报价_次低*-1","投标报价_次低",AggregateEnum.Sum)
b.Totals.AddExp("投标执行_投标报价_中间","投标执行_投标报价_中间*-1","投标报价_中间",AggregateEnum.Sum)
b.Totals.AddExp("投标执行_投标报价_次高","投标执行_投标报价_次高*-1","投标报价_次高",AggregateEnum.Sum)
b.Totals.AddExp("投标执行_投标报价_最高","投标执行_投标报价_最高*-1","投标报价_最高",AggregateEnum.Sum)

b.Filter = "投标日期 >= #" & e.Form.Controls("DateTimePicker1").Value & "# And 投标日期 <= #" & e.Form.Controls("DateTimePicker2").Value & "# and 投标结果 Like \'%项目未中标%\'"
b.VerticalTotal = True
b.GrandProportion = True
Tables("投标评价_Table2").DataSource = b.BuildDataSource()

DataTables("投标评价_Table2").DataCols.Add  _
("点数",Gettype(Double), "投标执行_投标报价_最低 + 投标执行_投标报价_次低 + 投标执行_投标报价_中间 + 投标执行_投标报价_次高 + 投标执行_投标报价_最高")

Dim dr As Row
For i As Integer = 0 To Tables("投标评价_Table2").Rows.Count(True) - 1
    dr = Tables("投标评价_Table2").Rows(i,True)
    dr("投标执行_投标报价_最低gdr") = Format(dr("投标执行_投标报价_最低") / dr("点数"),"0.00")
    dr("投标执行_投标报价_次低gdr") = Format(dr("投标执行_投标报价_次低") / dr("点数"),"0.00")
    dr("投标执行_投标报价_中间gdr") = Format(dr("投标执行_投标报价_中间") / dr("点数"),"0.00")
    dr("投标执行_投标报价_次高gdr") = Format(dr("投标执行_投标报价_次高") / dr("点数"),"0.00")
    dr("投标执行_投标报价_最高gdr") = Format(dr("投标执行_投标报价_最高") / dr("点数"),"0.00")
Next

Tables("投标评价_Table2").AutoSizeCols()
Tables("投标评价_Table2").Cols("点数").Width = 40
Tables("投标评价_Table2").Cols("点数").Move(2)
Tables("投标评价_Table2").SetHeaderRowHeight(20,20)  \'投标评价 统计表00003  20160929
Tables("投标评价_Table2").Cols.Frozen = 2 \'副本冻结前两列
Tables("投标评价_Table2").Grid.Cols("项目属地").style.BackColor = Color.GhostWhite \'冻结
Tables("投标评价_Table2").Grid.Cols("投标结果").style.BackColor = Color.GhostWhite \'冻结
DataTables("投标评价_Table2").SysStyles("Normal").BackColor = Color. GhostWhite

Tables("投标评价_Table2").Grid.Cols("投标执行_投标报价_最低gdr").style.BackColor = Color.LightSalmon
Tables("投标评价_Table2").Grid.Cols("投标执行_投标报价_次低gdr").style.BackColor = Color.LightSalmon
Tables("投标评价_Table2").Grid.Cols("投标执行_投标报价_中间gdr").style.BackColor = Color.LightSalmon
Tables("投标评价_Table2").Grid.Cols("投标执行_投标报价_次高gdr").style.BackColor = Color.LightSalmon
Tables("投标评价_Table2").Grid.Cols("投标执行_投标报价_最高gdr").style.BackColor = Color.LightSalmon

Dim Chart  As WinForm.Chart  \'定义一个图表变量
Dim Series As WinForm.ChartSeries \'定义一个图系变量
Dim t As Table =  Tables("投标评价_Table2") \'定义一个变量t引用数据表
Chart= e.Form.Controls("Chart1") \' 引用窗口中的图表
Chart.VisualEffect = True \'加上这一行,让你的图表更漂亮
Chart.ChartType = ChartTypeEnum.Bar   \'图表类型该为Bar(条形)
Chart.SeriesList.Clear() \'清除图表原来的图系

Series = Chart.SeriesList.Add() \'增加一图系

Dim cls() As String = {"投标执行_投标报价_最低gdr","投标执行_投标报价_次低gdr","投标执行_投标报价_中间gdr","投标执行_投标报价_次高gdr","投标执行_投标报价_最高gdr"}
Dim ns() As String = {"最低","次低","中间","次高","最高"}
Dim dr22 As Row = t.Rows(t.Rows.Count(True) - 1,True)
Series.Length = cls.Length \'图系的数据点数等于表的行数
For i As Integer = 0  To cls.Length - 1  \'指定每个数据点的位置
    Series.X(i) = i \'指定水平坐标
    Series.Y(i) = dr22(cls(i)) \'指定垂直坐标
    Chart.AxisX.SetValueLabel(i, ns(i))
    \' Series.DataLabelText = "{#YVAL}"
Next

Chart.AxisX.AnnoWithLabels = True \'启用字符标示
Chart.BarClusterWidth = 20
Chart.AxisX.AnnoRotation = 0 \'X轴标示逆时针旋转45度