Foxtable(狐表)用户栏目专家坐堂 → 生成图表有误


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

主题:生成图表有误

美女呀,离线,留言给我吧!
susu312
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:997 积分:6752 威望:0 精华:0 注册:2018/6/8 16:17:00
生成图表有误  发帖心情 Post By:2018/6/25 21:38:00 [只看该作者]

源码如下:

Dim b As New GroupTableBuilder("统计表1",DataTables("person"))
Dim t As DataTable
b.Groups.AddDef("retiredPost","职务") '根据产品分组
b.Totals.AddDef("retiredPost",AggregateEnum.Count,"人数")
t=b.Build(True) '生成统计表
'MainTable = Tables("统计表1") '打开生成的统计表

Dim Chart As WinForm.Chart '定义一个图表变量
Dim Series As WinForm.ChartSeries '定义一个图系变量
Dim t1 As DataTable = t '定义一个变量t引用数据表
Dim sm As Integer = t1.Compute("Sum(人数)") '计算总数量
Chart= Forms("主窗口").Controls("Chart1") ' 引用窗口中的图表
Chart.SeriesList.Clear() '清除图表原来的图系
Chart.VisualEffect = True '加上这一行,让你的图表更漂亮
Chart.ChartType = ChartTypeEnum.Pie '图表1类型改为Bar(条形)
For Each r As DataRow In t1.dataRows
    Series = Chart.SeriesList.Add() '增加一个图系
    Series.Length = 1 '一个系列只能包括一个值
    Series.Text = r("职务") & "(" & r("人数") & ")" '设置图系的标题
    Series.Y(0) = r("人数") '指定值
    Series.DataLabelText = Math.Round(r("人数")*100/sm,2) & "%" '计算百分比
Next
Chart.LegendVisible = True '显示图列
Chart.LegendCompass= CompassEnum.East '图列显示在东方(右方)

 

 


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

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110815 积分:564019 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/6/25 22:01:00 [只看该作者]

试试

Dim b As New GroupTableBuilder("统计表1",DataTables("person"))
Dim t As DataTable
b.Groups.AddDef("retiredPost","职务") '根据产品分组
b.Totals.AddDef("retiredPost",AggregateEnum.Count,"人数")
t=b.Build(True) '生成统计表
'MainTable = Tables("统计表1") '打开生成的统计表
Dim Chart As WinForm.Chart '定义一个图表变量
Dim Series As WinForm.ChartSeries '定义一个图系变量
Dim sm As Integer = t1.Compute("Sum(人数)") '计算总数量
Chart= Forms("主窗口").Controls("Chart1") ' 引用窗口中的图表
Chart.SeriesList.Clear() '清除图表原来的图系
Chart.VisualEffect = True '加上这一行,让你的图表更漂亮
Chart.ChartType = ChartTypeEnum.Pie '图表1类型改为Bar(条形)
Series.Length = t.dataRows.Count
Series = Chart.SeriesList.Add() '增加一个图系
For i As Integer = 0 To t.dataRows.Count - 1
    Series.Text = r("职务") & "(" & r("人数") & ")" '设置图系的标题
    Series.X(i) = t.Rows(i)("职务") '指定水平坐标
    Series.Y(i) = t.Rows(i)("人数") '指定垂直坐标
    Series.DataLabelText = Math.Round(r("人数")*100/sm,2) & "%" '计算百分比
Next
Chart.LegendVisible = True '显示图列
Chart.LegendCompass= CompassEnum.East '图列显示在东方(右方)

 回到顶部
美女呀,离线,留言给我吧!
susu312
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:997 积分:6752 威望:0 精华:0 注册:2018/6/8 16:17:00
  发帖心情 Post By:2018/6/25 22:28:00 [只看该作者]


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

 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110815 积分:564019 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/6/25 22:31:00 [只看该作者]

……
Dim sm As Integer = t.Compute("Sum(人数)") '计算总数量
Chart= Forms("主窗口").Controls("Chart1") ' 引用窗口中的图表
Chart.SeriesList.Clear() '清除图表原来的图系
Chart.VisualEffect = True '加上这一行,让你的图表更漂亮
Chart.ChartType = ChartTypeEnum.Pie '图表1类型改为Bar(条形)
Series.Length = t.dataRows.Count
Series = Chart.SeriesList.Add() '增加一个图系
For i As Integer = 0 To t.dataRows.Count - 1
    Series.Text = t.dataRows(i)("职务") & "(" & t.dataRows(i)("人数") & ")" '设置图系的标题
    Series.X(i) = t.dataRows(i)("职务") '指定水平坐标
    Series.Y(i) = t.dataRows(i)("人数") '指定垂直坐标
    Series.DataLabelText = Math.Round(t.dataRows(i)("人数")*100/sm,2) & "%" '计算百分比
Next
……

 回到顶部
美女呀,离线,留言给我吧!
susu312
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:997 积分:6752 威望:0 精华:0 注册:2018/6/8 16:17:00
  发帖心情 Post By:2018/6/25 22:38:00 [只看该作者]

错误:未将对象引用设置到对象的实例。

代码:

 

Dim b As New GroupTableBuilder("统计表1",DataTables("person"))
Dim t As DataTable
b.Groups.AddDef("retiredPost","职务") '根据产品分组
b.Totals.AddDef("retiredPost",AggregateEnum.Count,"人数")
t=b.Build(True) '生成统计表
'MainTable = Tables("统计表1") '打开生成的统计表
Dim Chart As WinForm.Chart '定义一个图表变量
Dim Series As WinForm.ChartSeries '定义一个图系变量

Dim sm As Integer = t.Compute("Sum(人数)") '计算总数量
Chart= Forms("主窗口").Controls("Chart1") ' 引用窗口中的图表
Chart.SeriesList.Clear() '清除图表原来的图系
Chart.VisualEffect = True '加上这一行,让你的图表更漂亮
Chart.ChartType = ChartTypeEnum.Pie '图表1类型改为Bar(条形)
Series.Length = t.dataRows.Count
Series = Chart.SeriesList.Add() '增加一个图系
For i As Integer = 0 To t.dataRows.Count - 1
    Series.Text = t.dataRows(i)("职务") & "(" & t.dataRows(i)("人数") & ")" '设置图系的标题
    Series.X(i) = t.dataRows(i)("职务") '指定水平坐标
    Series.Y(i) = t.dataRows(i)("人数") '指定垂直坐标
    Series.DataLabelText = Math.Round(t.dataRows(i)("人数")*100/sm,2) & "%" '计算百分比
Next


Chart.LegendVisible = True '显示图列
Chart.LegendCompass= CompassEnum.East '图列显示在东方(右方)


 回到顶部
帅哥,在线噢!
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110815 积分:564019 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/6/25 22:51:00 [只看该作者]

请上传具体实例测试

 回到顶部
美女呀,离线,留言给我吧!
susu312
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:997 积分:6752 威望:0 精华:0 注册:2018/6/8 16:17:00
  发帖心情 Post By:2018/6/25 23:00:00 [只看该作者]

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

这是我用的表

 回到顶部
帅哥,在线噢!
有点蓝
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110815 积分:564019 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/6/25 23:16:00 [只看该作者]

Dim b As New GroupTableBuilder("统计表1",DataTables("person"))
Dim t As DataTable
b.Groups.AddDef("retiredPost","职务") '根据产品分组
b.Totals.AddDef("retiredPost",AggregateEnum.Count,"人数")
t=b.Build(True) '生成统计表
'MainTable = Tables("统计表1") '打开生成的统计表
Dim Chart As WinForm.Chart '定义一个图表变量
Dim Series As WinForm.ChartSeries '定义一个图系变量
Dim sm As Integer = t.Compute("Sum(人数)") '计算总数量
Chart= e.Form.Controls("Chart1") ' 引用窗口中的图表
Chart.SeriesList.Clear() '清除图表原来的图系
Chart.VisualEffect = True '加上这一行,让你的图表更漂亮
Chart.ChartType = ChartTypeEnum.Pie '图表1类型改为Bar(条形)
For i As Integer = 0 To t.dataRows.Count - 1
    Dim rs As Integer = val(t.dataRows(i)("人数"))
    Series = Chart.SeriesList.Add() '增加一个图系
    Series.Length = 1 '一个系列只能包括一个值
    Series.Text = t.dataRows(i)("职务") & "(" & rs & ")" '设置图系的标题
    Series.Y(0) = rs '指定值
    Series.DataLabelText = Math.Round(rs*100/sm,2) & "%" '计算百分比
Next

Chart.LegendVisible = True '显示图列
Chart.LegendCompass= CompassEnum.East '图列显示在东方(右方)

 回到顶部
美女呀,离线,留言给我吧!
susu312
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:997 积分:6752 威望:0 精华:0 注册:2018/6/8 16:17:00
  发帖心情 Post By:2018/6/26 8:21:00 [只看该作者]


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

还是没法生成饼状图


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


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

回复楼上,代码肯定没问题。

 

请上传具体的出错foxtable项目测试。


 回到顶部
总数 15 1 2 下一页