以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  怎么才能将数据都显示在一个柱形体上面呢  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=30184)

--  作者:keeryq
--  发布时间:2013/3/22 12:46:00
--  怎么才能将数据都显示在一个柱形体上面呢

高手好 我现在做的图表最高分最低分都不在一块 看起来特别的麻烦 现在其实就是四组数据  怎么才能让一组的数据最低分、最高分、平均分都显示在一个柱形上呢 就像说明书里面的那样重叠在一起呢

这是我的程序 求高手指点

\'------------------------------------生成统计表------------------------
Dim g As New GroupTableBuilder("统计表2", DataTables("学员基础信息"))
g.Groups.AddDef("培训_产品组1", "产品组")
g.Totals.AddDef("ITC_ITC1_Pretest", AggregateEnum.Max, "PretestMAX")
g.Totals.AddDef("ITC_ITC1_Pretest", AggregateEnum.Average, "PreAVE")
g.Totals.AddDef("ITC_ITC1_Pretest", AggregateEnum.Min, "PretestMIN")
g.Totals.AddDef("ITC_ITC1_PostTest", AggregateEnum.Max, "PostMAX")
g.Totals.AddDef("ITC_ITC1_PostTest", AggregateEnum.Average, "PostAVE")
g.Totals.AddDef("ITC_ITC1_PostTest", AggregateEnum.Min, "PostMIN")
g.Totals.AddDef("ITC_ITC1_RolePlay", AggregateEnum.Max, "RolePlayMAX")
g.Totals.AddDef("ITC_ITC1_RolePlay", AggregateEnum.Average, "RolePlayAVE")
g.Totals.AddDef("ITC_ITC1_RolePlay", AggregateEnum.Min, "RolePlayMIN")
g.Totals.AddDef("ITC_ITC1_PPT", AggregateEnum.Max, "PPTMAX")
g.Totals.AddDef("ITC_ITC1_PPT", AggregateEnum.Average, "PPTAVE")
g.Totals.AddDef("ITC_ITC1_PPT", AggregateEnum.Min, "PPTMIN")

g.filter = Filter   \'----筛选----
g.Build()
\'-------------------------------------生成图表---------------------------
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.AxisY.Major = 10
Chart.AxisY.Min = 0 \'指定Y轴的最小值

Chart.SeriesList.Clear() \'清除图表原来的图系
For Each c As Col In t.Cols
    If c.Name <> "产品组" Then
        Series = Chart.SeriesList.Add() \'增加一个图系
        Series.Text = c.Name \'设置图系的标题
        Series.X.DataField = "产品组" \'X轴绑定到产品列
        Series.Y.DataField = c.Name \'设置Y轴的绑定列
        Series.DataLabelText = "{#YVAL}"
    End If
Next
\'Chart.VisualEffect = True \'加上这一行,让你的图表更漂亮

Chart.LegendVisible = True \'显示图列
Chart.LegendCompass= CompassEnum.South \'图列显示在南方(底端)

 

 


此主题相关图片如下:预期.png
按此在新窗口浏览图片

此主题相关图片如下:现在.png
按此在新窗口浏览图片

--  作者:狐狸爸爸
--  发布时间:2013/3/22 14:39:00
--  
....
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.AxisY.Major = 10
Chart.AxisY.Min = 0 \'指定Y轴的最小值
Chart.SeriesList.Clear() \'清除图表原来的图系
chart.Stacked = true
....
 
 

--  作者:keeryq
--  发布时间:2013/3/22 15:20:00
--  
chart.Stacked = true这句话我加上后结果都叠加到一个柱形上了,没有让同一成绩的最高分、平均分、最低分显示在同一个柱形上而是 所有的都在上面了
--  作者:狐狸爸爸
--  发布时间:2013/3/22 16:09:00
--  

用简单例子说话

不用动辄整个项目上传

[此贴子已经被作者于2013-3-22 16:09:12编辑过]

--  作者:keeryq
--  发布时间:2013/3/22 16:51:00
--  

 嘿嘿 整个的看我都感觉麻烦了  嘿嘿  这次明白俺的意思了吗  万分感谢呢!!!!

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:销售培训.table


图片点击可在新窗口打开查看此主题相关图片如下:实现的目标.png
图片点击可在新窗口打开查看

--  作者:狐狸爸爸
--  发布时间:2013/3/22 17:44:00
--  
抱歉,我也不会。
--  作者:don
--  发布时间:2013/3/22 23:28:00
--  

这样?

 

\'------------------------------筛选条件-------------------------------
Dim Filter As String
With e.Form.Controls("产品组")
    If .Value IsNot Nothing Then
        Filter = "培训_产品组1 = \'" & .Value & "\'"
    End If
End With
With e.Form.Controls("StartDate")
    If .Value IsNot Nothing Then
        If Filter >"" Then
            Filter = Filter & " And "
        End If
        Filter = Filter & "培训_时间1 >= #" & .Value & "#"
    End If
End With
With e.Form.Controls("EndDate")
    If .Value IsNot Nothing Then
        If Filter >"" Then
            Filter = Filter & " And "
        End If
        Filter = Filter & "培训_时间1 <= #" & .Value & "#"
    End If
End With
If Filter > "" Then
    Tables("学员基础信息").Filter = Filter
End If

\'------------------------------------生成统计表------------------------

Dim s1,flt1 As String
Dim dt As DataTable =DataTables("学员基础信息")
s1 = e.Form.Controls("产品组").value

If DataTables.Contains("统计") \'如果存在统计表
    DataTables.Delete("统计") \'则删除之
End If
Dim dtb As New DataTableBuilder("统计")
dtb.AddDef(
"产品组" , Gettype(String), 32)
dtb.AddDef("MIN", Gettype(Integer))
dtb.AddDef("MAX", Gettype(Integer))
dtb.Build()
Dim t As Table =Tables("统计")
t.AddNew(4)
For Each r As Row In t.Rows
    r(
"产品组" ) ="Pretest,PostTest,RolePlay,PPT".split(",")(r.Index)
    flt1 ="ITC_ITC1_" & r(
"产品组")
    r("MIN") = dt.Compute("Min(" & flt1 & ")",Filter)
    r("MAX") = dt.Compute("MAX(" & flt1 & ")",Filter)
Next

\'-------------------------------------生成图表---------------------------
Dim Chart As WinForm.Chart \'定义一个图表变量
Dim Series As WinForm.ChartSeries \'定义一个图系变量
Chart = e.Form.Controls("Chart1") \' 引用窗口中的图表
Chart.SeriesList.Clear() \'清除图表原来的图系
Chart.ChartType = ChartTypeEnum.Bar \'图表类型改为Bar(条形)
Chart.DataSource = "统计" \'设置绑定表
chart.Stacked = True

For Each c As Col In t.Cols
    If c.Name <>  
"产品组"  Then
        Series = Chart.SeriesList.Add() \'增加一个图系
        Series.Text = c.Name \'设置图系的标题
        Series.X.DataField = 
"产品组"   \'X轴绑定到产品列
        Series.Y.DataField = c.Name \'设置Y轴的绑定列
        Series.DataLabelText = "{#YVAL}"
    End If
Next

\'Chart.VisualEffect = True \'加上这一行,让你的图表更漂亮
Chart.LegendVisible = True \'显示图列

[此贴子已经被作者于2013-3-25 16:31:16编辑过]

--  作者:keeryq
--  发布时间:2013/3/25 9:18:00
--  回复:(狐狸爸爸)抱歉,我也不会。

 哦哦  没关系的  但还是要谢谢你!


--  作者:zerov
--  发布时间:2013/3/25 10:14:00
--  
狐爸真幽默
--  作者:keeryq
--  发布时间:2013/3/25 14:08:00
--  

 大侠我复制粘贴过去 报错了  怎么回事呢  万分感谢呀


图片点击可在新窗口打开查看此主题相关图片如下:捕获.png
图片点击可在新窗口打开查看
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:销售培训.table