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


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

主题:圆饼图表生成

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


加好友 发短信
等级:九尾狐 帖子:2701 积分:17993 威望:0 精华:0 注册:2013/4/9 10:41:00
圆饼图表生成  发帖心情 Post By:2018/8/27 22:33:00 [显示全部帖子]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:统计图表学习2.table

请教一下老师, 计算总量可以是在不添加新表或者临时表情况下,把计算总数量设置为不同表不同列的和吗?感谢 感谢 

产品名称用表的名称可以吗?感谢 感谢 

Dim Chart As WinForm.Chart '定义一个图表变量
Dim
Series As WinForm.ChartSeries '定义一个图系变量
Dim
t As Table = Tables("统计表1") '定义一个变量t引用数据表
Dim
sm As Integer = t.Compute("Sum(数量)") '计算总数量
Chart
= Forms("窗口1").Controls("Chart1") ' 引用窗口中的图表
Chart
.VisualEffect = True '加上这一行,让你的图表更漂亮
Chart
.ChartType = ChartTypeEnum.Pie '图表1类型改为Bar(条形)
For
Each r As Row In t.Rows
    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 '图列显示在东方(右方)


就是数量的部分可以是几个表指定的某列后行吗?


比如这个图表 的计算总量为  表 支出汇总的支出金额 的支出编号的最后一行的支出金额 加 表负载汇总 的欠款编号最后一行的 欠款金额 加 经营 汇总 的经营编号 最后一行 的变动金额 列 ,这上个数据总和为计算总量,




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

[此贴子已经被作者于2018/8/27 22:34:09编辑过]

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


加好友 发短信
等级:九尾狐 帖子:2701 积分:17993 威望:0 精华:0 注册:2013/4/9 10:41:00
  发帖心情 Post By:2018/8/28 0:07:00 [显示全部帖子]

太感谢 了 太感谢了, 就是总数量可以是各个表最后一行的和吗?不是整列, 就只是最后一行,比如  支出汇总 的最后一行就是 支出编号列的最后一行 20180826231902 ,对于的 支出金额 就是30,其它两个表也是一样,前面的不管他,只是计算最后一行,感谢 感谢 

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


加好友 发短信
等级:九尾狐 帖子:2701 积分:17993 威望:0 精华:0 注册:2013/4/9 10:41:00
  发帖心情 Post By:2018/8/28 15:03:00 [显示全部帖子]

能在请教一下红色和蓝色的代码吗? 蓝色部分是 表对应的列的和,红色为 表对应列的最后一行,感谢 感谢 
我想把2楼和4楼的组合起来,感谢 感谢 
Dim Chart As WinForm.Chart '定义一个图表变量
Dim Series As WinForm.ChartSeries '定义一个图系变量
Chart= Forms("财务汇总窗口").Controls("Chart5") ' 引用窗口中的图表
Chart.SeriesList.Clear() '清除图表原来的图系
Chart.VisualEffect = True '加上这一行,让你的图表更漂亮
Chart.ChartType = ChartTypeEnum.Pie '图表1类型改为Bar(条形)
Dim nms() As String = {"企业档案","投资资产","现金明细","供应系统","欠款明细"}
Dim nms2() As String = {"财务_待收款","资产时态_在投资金","可控金额","未支付合计","欠款合计"}
Dim nms3() As String = {"现金明细","欠款明细"}
Dim nms4() As String = {"可控金额","欠款合计"}
Dim sum As Double = 0
For i As Integer = 0 To nms.Length - 1
    sum += Tables(nms(i)).Compute("sum(" & nms2(i) & ")")
Next
For i As Integer = 0 To nms.Length - 1
    Series = Chart.SeriesList.Add() '增加一个图系
    Series.Length = 1 '一个系列只能包括一个值
    Series.Text = nms(i)
    Dim cnt = Tables(nms(i)).Compute("sum(" & nms2(i) & ")")
    Series.Y(0) = cnt
    Series.DataLabelText = Math.Round(cnt*100/sum ,2) & "%"
Next
Chart.LegendVisible = True '显示图列
Chart.LegendCompass= CompassEnum.East '图列显示在东方(右方)



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


加好友 发短信
等级:九尾狐 帖子:2701 积分:17993 威望:0 精华:0 注册:2013/4/9 10:41:00
  发帖心情 Post By:2018/8/28 16:31:00 [显示全部帖子]

能再帮忙教学一下吗?感谢  太感谢了,太感谢了, 如果总和是 某列相同的最后一行合应该怎么写呀? 

比如 总和是 按下面代码算出的 ,相对于吧 下面代码转为为图表,感谢 感谢 

Select Case e.DataCol.Name
    Case "债权人","借款金额","还款金额"
        Dim drs As List(of DataRow)
        Dim Filter As String
        Filter = "[_SortKey] >= " & e.DataRow("_SortKey") & " And [债权人] = '" & e.DataRow("债权人") & "'"
        drs = e.DataTable.Select(Filter)
        For Each dr As DataRow In drs
            Filter = "[_SortKey] <= " & dr("_SortKey") & " And [债权人] = '" & dr("债权人") & "'"
            Dim Val1 As Double = e.DataTable.Compute("Sum(借款金额)",Filter)
            Dim Val2 As Double = e.DataTable.Compute("Sum(还款金额)",Filter)
            dr("欠款明细") = Val1 - Val2
        Next
        If e.DataCol.Name = "债权人" AndAlso e.OldValue IsNot Nothing AndAlso e.OldValue <> e.NewValue Then
            Filter = "[_SortKey] > " & e.DataRow("_SortKey") & " And [债权人] = '" & e.OldValue & "'"
            drs = e.DataTable.Select(Filter)
            For Each dr As DataRow In drs
                Filter = "[_SortKey] <= " & dr("_SortKey") & " And [债权人] = '" & dr("债权人") & "'"
                Dim Val1 As Double = e.DataTable.Compute("Sum(借款金额)",Filter)
                Dim Val2 As Double = e.DataTable.Compute("Sum(还款金额)",Filter)
                dr("欠款明细") = Val1 - Val2
            Next
        End If
End Select '求欠款明细

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


加好友 发短信
等级:九尾狐 帖子:2701 积分:17993 威望:0 精华:0 注册:2013/4/9 10:41:00
  发帖心情 Post By:2018/8/28 17:21:00 [显示全部帖子]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:选行图表显示.table

感谢 感谢 
总和为第一列相同行的最后一行的第二列,比如目前的表就是A,4+B,7+C,7


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


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


加好友 发短信
等级:九尾狐 帖子:2701 积分:17993 威望:0 精华:0 注册:2013/4/9 10:41:00
  发帖心情 Post By:2018/8/28 17:26:00 [显示全部帖子]

能在问问2给问题吗? 可以让图标变得饱满一写吗?

就是商标放在图表上面的时候如何显示内容和数据啊,感谢 感谢 

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


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


加好友 发短信
等级:九尾狐 帖子:2701 积分:17993 威望:0 精华:0 注册:2013/4/9 10:41:00
  发帖心情 Post By:2018/8/30 9:41:00 [显示全部帖子]

感谢 感谢 可以让图表显示的大小在控件设置的大小相差不大吗?感谢 感谢 

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


加好友 发短信
等级:九尾狐 帖子:2701 积分:17993 威望:0 精华:0 注册:2013/4/9 10:41:00
  发帖心情 Post By:2018/8/30 10:20:00 [显示全部帖子]

感谢 感受 我试了, 感谢 可以吧图表显示的设置包含一写吗,就是圈起的位置没有那么宽,感谢 感谢

图片点击可在新窗口打开查看此主题相关图片如下:搜狗截图18年08月30日1019_1.gif
图片点击可在新窗口打开查看

Dim bchart = chart.basecontrol
bchart.ChartArea.Size = New Size(400, 400) '设置图表显示大小
bchart.Legend.Size = New Size(100, 1000)
bchart.Legend.Location = New Point(500, 100)'详解显示定位坐标
'bchart.Legend.Orientation = LegendOrientationEnum.Horizontal
[此贴子已经被作者于2018/8/30 10:20:50编辑过]

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


加好友 发短信
等级:九尾狐 帖子:2701 积分:17993 威望:0 精华:0 注册:2013/4/9 10:41:00
  发帖心情 Post By:2018/8/30 11:42:00 [显示全部帖子]

感谢 感谢 谢谢 

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


加好友 发短信
等级:九尾狐 帖子:2701 积分:17993 威望:0 精华:0 注册:2013/4/9 10:41:00
  发帖心情 Post By:2018/8/30 12:03:00 [显示全部帖子]

Dim Chart As WinForm.Chart '定义一个图表变量
Dim Series As WinForm.ChartSeries '定义一个图系变量
Chart= Forms("窗口1").Controls("Chart1") ' 引用窗口中的图表
Chart.SeriesList.Clear() '清除图表原来的图系
Chart.VisualEffect = True '加上这一行,让你的图表更漂亮
Chart.ChartType = ChartTypeEnum.Pie '图表1类型改为Bar(条形)
Dim t As Table = Tables("表A")
Dim sum As Double = 0
For Each s As String In t.DataTable.GetValues("第一列", "第一列 is not null")
    Dim fdr As DataRow = t.DataTable.find("第一列='" & s & "'", "_sortkey desc")
    If fdr IsNot Nothing Then
        msgbox(fdr("第二列"))
        sum += fdr("第二列")
        
        Chart.LegendVisible = True '显示图列
        Chart.LegendCompass= CompassEnum.East '图列显示在东方(右方)
    End If
Next

这个应该怎么组合啊,实在是有些看不懂,感谢 感谢 

 回到顶部
总数 24 1 2 3 下一页