Foxtable(狐表)用户栏目专家坐堂 → 占比生成图表问题


  共有2423人关注过本帖树形打印复制链接

主题:占比生成图表问题

帅哥哟,离线,有人找我吗?
douglas738888
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1175 积分:8792 威望:0 精华:0 注册:2012/4/18 16:28:00
占比生成图表问题  发帖心情 Post By:2016/9/30 11:57:00 [只看该作者]

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

 

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

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

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110738 积分:563610 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/9/30 14:09:00 [只看该作者]


 回到顶部
帅哥哟,离线,有人找我吗?
douglas738888
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1175 积分:8792 威望:0 精华:0 注册:2012/4/18 16:28:00
  发帖心情 Post By: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编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110738 积分:563610 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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度


 回到顶部