Foxtable(狐表)用户栏目专家坐堂 → 多图系


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

主题:多图系

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


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
多图系  发帖心情 Post By: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编辑过]

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By: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
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
  发帖心情 Post By: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
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
  发帖心情 Post By: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


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


加好友 发短信
等级:五尾狐 帖子:1093 积分:6682 威望:0 精华:0 注册:2013/7/1 9:05:00
  发帖心情 Post By: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
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
  发帖心情 Post By: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表示呢?



 回到顶部