以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  多图系  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=93681)

--  作者:fubblyc
--  发布时间:2016/12/4 14:31:00
--  多图系

想要勾选,几个营业员就有几条折线,就是多图系,没做对,代码如下: 

 

 

 

Dim zb As String = e.Form.Controls("combobox1").Value
Dim bblx As String = “周次”

Dim Chart As WinForm.Chart \'定义一个图表变量
Dim Series As WinForm.ChartSeries \'定义一个图系变量
Chart= e.Form.Controls("Chart1") \' 引用窗口中的图表
Chart.LegendVisible = True \'显示图例
Chart.DataSource = "零售报表_table1" \'设置绑定表
Chart.SeriesList.Clear() \'清除图表原来的图系
Chart.datafilter = "营业员 in ( \'" & e.sender.text.replace(",","\',\'") & " \') "
For Each zt As String In e.sender.text.split(",")
    Series = Chart.SeriesList.Add() \'增加一个图系
    Series.Text = zt  \'指定图系名称为营业员
    Series.X.DataField = bblx \'X轴绑定到月份列
    Series.Y.DataField = zb \'Y轴绑定到数量列
    Series.DataLabelText = "{#YVAL}"
Next

 

结果如图:


图片点击可在新窗口打开查看此主题相关图片如下:微信截图_20161204143112.png
图片点击可在新窗口打开查看
[此贴子已经被作者于2016/12/4 14:48:29编辑过]

--  作者:有点色
--  发布时间:2016/12/4 16:57:00
--  

 你应该先生成交叉统计表吧?

 

 也就是这样的结构 ,然后再设置 Series.Y.DataField = 不同的列名

 

周次  姓名1 姓名2 姓名3

1       999   88      777

2

3

 

 http://www.foxtable.com/webhelp/scr/0970.htm

 


--  作者:fubblyc
--  发布时间:2016/12/4 22:53:00
--  

http://www.foxtable.com/webhelp/index.htm?page=0970.htm

 

不是可以多图系吗?

 

Dim Chart As WinForm.Chart \'定义一个图表变量
Dim Series As WinForm.ChartSeries \'定义一个图系变量
Chart= e.Form.Controls("Chart1") \' 引用窗口中的图表
Chart.SeriesList.Clear() \'清除图表原来的图系
For Each Year As String In DataTables("统计表1").GetValues("年")
    Series = Chart.SeriesList.Add() \'每年一个图系
    Series.Text = Year  \'指定图系名称为年份
    Series.Length = 12  \'指定图系的数据点数,1年12个月
    Chart.AxisX.Min = 1  \'指定X轴的最小值,也就是从1月开始
    Chart.AxisX.Max = 12 \'\'指定X轴的最大值,一年只有12个月
    For Month As Integer = 1 To 12 \'逐月设置坐标
        Series.X(Month) = Month      \'指定水平坐标为月份
        Dim r As DataRow = DataTables("统计表1").Find("年 = " & Year & " And  月 = " & Month)\'找出对应年月的行
        If r IsNot Nothing \'如果找到对应年月的行
            Series.Y(Month) = r("数量") \'指定数量作为垂直坐标
        End If
    Next
Next


--  作者:fubblyc
--  发布时间:2016/12/4 22:58:00
--  

http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=62850&skin=0

 

 

\'--------定义图表1
Dim g As New GroupTableBuilder("统计表3", DataTables("站日耗电量统计"))
g.Groups.AddDef("时间", DateGroupEnum.Year, "年")
g.Totals.AddDef("一号站")
g.Totals.AddDef("二号站")
g.Totals.AddDef("三号站")
g.Totals.AddDef("四号站")
g.Totals.AddDef("五号站")
g.Totals.AddDef("六号站")
g.Totals.AddDef("七号站")
g.Totals.AddDef("八号站")
g.Totals.AddDef("九号站")
g.Build()
MainTable = Tables("统计表3")

Dim zd As String = e.Form.Controls("站点").Text

\'----------------------------生成图表------------------------
Dim Chart As WinForm.Chart \'定义一个图表变量
Dim Series As WinForm.ChartSeries \'定义一个图系变量
Dim t As Table = Tables("统计表3") \'定义一个变量t引用数据表
Chart= e.Form.Controls("Chart1") \' 引用窗口中的图表
Chart.AxisX.AnnoFormatString = "0年"
Chart.LegendVisible = True \'显示图例

Chart.SeriesList.Clear() \'清除图表原来的图系
Chart.AxisX.Major = 1
Chart.AxisY.Major = 1
Chart.ChartType = ChartTypeEnum.Bar \'图表类型改为Bar(条形)

Dim n As Integer = 0
For Each z As String In zd.Split(",")
    Series = Chart.SeriesList.Add() \'增加一个图系
    Series.Length = t.Rows.Count \'图系的数据点数等于表的行数
    Series.Text = "热力站" & (n + 1)
    For i As Integer = 0 To t.Rows.Count - 1 \'指定每个数据点的位置
        Series.X(i) = t.Rows(i)("年") \'指定水平坐标
        Series.Y(i) = t.Rows(i)(z.replace("热力", "")) \'指定垂直坐标
        Series.DataLabelText = "{#YVAL}"
    Next
    n += 1
Next


--  作者:有点酸
--  发布时间:2016/12/4 23:02:00
--  
你的表结构,和帮助介绍的不一样,不能生搬硬套。特殊情况,自己编码生成图标,不要用绑定列。
例如:http://www.foxtable.com/webhelp/scr/2966.htm
http://www.foxtable.com/webhelp/scr/3223.htm

帮助有很多不用绑定,编码增加图系和数据点的例子,很简单:
http://www.foxtable.com/webhelp/scr/0966.htm
http://www.foxtable.com/webhelp/scr/0968.htm

你3楼贴出的代码,也是编码增加图系和数据点的,自动看懂代码,就能解决多数问题。
[此贴子已经被作者于2016/12/4 23:04:09编辑过]

--  作者:fubblyc
--  发布时间:2016/12/5 11:23:00
--  

嗯嗯。可以了!

 

If Forms("零售报表").Controls("DropBox3").value = "时报" Then
bblx = "时"
ElseIf Forms("零售报表").Controls("DropBox3").value = "日报" Then
bblx = "日"
ElseIf Forms("零售报表").Controls("DropBox3").value = "周报" Then
bblx = "周次"
ElseIf Forms("零售报表").Controls("DropBox3").value = "月报" Then
bblx = "月份"
ElseIf Forms("零售报表").Controls("DropBox3").value = "季报" Then
bblx = "季度"
ElseIf Forms("零售报表").Controls("DropBox3").value = "年报" Then
bblx = "年份"
End If

 

Dim r As DataRow = DataTables("零售报表_table1").Find("周次 = \'" & i+t.Rows(0)(bblx) & "\' And  营业员 = \'" & zt & "\' ")  \'找出对应年月的行

 

要如何将 Find("周次 =。。。。。)  用变量bblx表示呢?