Foxtable(狐表)用户栏目专家坐堂 → 【图表】在生成时,提示无效的数据类型,该这么解决呢?


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

主题:【图表】在生成时,提示无效的数据类型,该这么解决呢?

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


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
【图表】在生成时,提示无效的数据类型,该这么解决呢?  发帖心情 Post By:2017/12/1 4:12:00 [只看该作者]

【图表】在生成时,提示无效的数据类型 参照教程制作的 该这么解决呢?
想实现按照门店名称不同进行筛选生成三个不同的图表,采用下面的样式

图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看



代码如下
Dim Chart As WinForm.Chart '定义一个图表变量
Dim Series As WinForm.ChartSeries '定义一个图系变量

Dim t As Table = Tables("门店产值") '定义一个变量t引用数据表
Chart = e.Form.Controls("Chart1") ' 引用窗口中的图表
Chart.ChartType = ChartTypeEnum.Bar '图表类型改为Bar(条形)
Chart.SeriesList.Clear() '清除图表原来的图系
For Each c As Col In t.Cols
    If c.Name <> "门店名称" Then
        Series = Chart.SeriesList.Add() '增加一个图系
        Series.Text = c.Name '设置图系的标题
        Series.Length = t.Rows.Count '设置图系的长度
        For r As Integer = 0 To t.Rows.Count - 1
            Series.X(r) = r
            Series.Y(r) = t.Rows(r)(c.Name)
        Next
    End If
Next
For r As Integer = 0 To t.Rows.Count - 1 
    Chart.AxisX.SetValueLabel(r, t.Rows(r)("门店名称")) '指定字符表示
Next
'Series.DataLabelText = "{#YVAL}"
Chart.AxisX.AnnoWithLabels = True '启用字符标示
Chart.VisualEffect = True '加上这一行,让你的图表更漂亮
Chart.LegendVisible = True '显示图列
Chart.LegendCompass= CompassEnum.South '图列显示在南方(底端)
运行提示错误如下

图片点击可在新窗口打开查看此主题相关图片如下:2.jpg
图片点击可在新窗口打开查看
数据库表如下

图片点击可在新窗口打开查看此主题相关图片如下:1.jpg
图片点击可在新窗口打开查看

[此贴子已经被作者于2017/12/1 4:17:51编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/12/1 8:54:00 [只看该作者]

For Each c As Col In t.Cols
    If c.Name <> "门店名称" andalso c.name <> "年份" Then
        Series = Chart.SeriesList.Add() '增加一个图系
        Series.Text = c.Name '设置图系的标题
        Series.Length = t.Rows.Count '设置图系的长度
        For r As Integer = 0 To t.Rows.Count - 1
            Series.X(r) = r
            Series.Y(r) = val(t.Rows(r)(c.Name))
        Next
    End If
Next

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


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点甜)For Each c As Col In t.Cols?...  发帖心情 Post By:2017/12/1 10:29:00 [只看该作者]

有点甜老师
现在这个还是不是理想图标

图片点击可在新窗口打开查看此主题相关图片如下:11.png
图片点击可在新窗口打开查看

理想图标是Y显示销售额  X显示一月 二月 …… 三个部门弄成三个图标  
现在怎么实现呢?
比如现在第一个图标 是硅藻泥店 的 怎么定义一个门店名称等于硅藻泥店的图标呢
[此贴子已经被作者于2017/12/1 10:30:07编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/12/1 10:44:00 [只看该作者]

Dim Chart As WinForm.Chart '定义一个图表变量
Dim Series As WinForm.ChartSeries '定义一个图系变量

Dim t As Table = Tables("门店产值") '定义一个变量t引用数据表
Chart = e.Form.Controls("Chart1") ' 引用窗口中的图表
Chart.ChartType = ChartTypeEnum.Bar '图表类型改为Bar(条形)
Chart.SeriesList.Clear() '清除图表原来的图系

For r As Integer = 0 To t.Rows.Count - 1
    Series = Chart.SeriesList.Add() '增加一个图系
    Series.Text = t.rows(r)("门店名称") '设置图系的标题
    Series.Length = t.cols.Count - 2 '设置图系的长度
    For i As Integer = 2 To t.cols.count-1
        Series.X(i-2) = i-2
        Series.Y(i-2) = t.Rows(r)(t.cols(i).name)
        Chart.AxisX.SetValueLabel(i-2, t.cols(i).name) '指定字符表示
    Next
Next

'Series.DataLabelText = "{#YVAL}"
Chart.AxisX.AnnoWithLabels = True '启用字符标示
Chart.VisualEffect = True '加上这一行,让你的图表更漂亮
Chart.LegendVisible = True '显示图列
Chart.LegendCompass= CompassEnum.South '图列显示在南方(底端)


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


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点甜)Dim Chart As WinForm.Chart '定义一...  发帖心情 Post By:2017/12/1 11:06:00 [只看该作者]

有点甜老师 
现在还是三个门店都显示的哦
我想只显示硅藻泥店 我怎么指定门店名称呢?
谢谢
柱形一个月只显示硅藻泥店的 不要现在所有的店都显示

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/12/1 11:39:00 [只看该作者]

Dim Chart As WinForm.Chart '定义一个图表变量
Dim Series As WinForm.ChartSeries '定义一个图系变量

Dim t As Table = Tables("门店产值") '定义一个变量t引用数据表
Chart = e.Form.Controls("Chart1") ' 引用窗口中的图表
Chart.ChartType = ChartTypeEnum.Bar '图表类型改为Bar(条形)
Chart.SeriesList.Clear() '清除图表原来的图系
t.filter = "门店名称 = '硅藻泥店'"

For r As Integer = 0 To t.Rows.Count - 1
    Series = Chart.SeriesList.Add() '增加一个图系
    Series.Text = t.rows(r)("门店名称") '设置图系的标题
    Series.Length = t.cols.Count - 2 '设置图系的长度
    For i As Integer = 2 To t.cols.count-1
        Series.X(i-2) = i-2
        Series.Y(i-2) = t.Rows(r)(t.cols(i).name)
        Chart.AxisX.SetValueLabel(i-2, t.cols(i).name) '指定字符表示
    Next
Next

'Series.DataLabelText = "{#YVAL}"
Chart.AxisX.AnnoWithLabels = True '启用字符标示
Chart.VisualEffect = True '加上这一行,让你的图表更漂亮
Chart.LegendVisible = True '显示图列
Chart.LegendCompass= CompassEnum.South '图列显示在南方(底端)


 回到顶部