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


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

主题:圆饼图表生成

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


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

For Each s As String In t.DataTable.GetValues("支出类型", "支出类型 is not null")
    Dim sum = t.DataTable.compute("sum(支出金额)", "支出类型='" & s & "'")

 

改成

 

Dim d As Date = new Date(Date.Today.Year, Date.Today.Month, 1)

For Each s As String In t.DataTable.GetValues("支出类型", "支出类型 is not null and 支出日期 >= #" & d & "# and 支出日期 < #" & d.AddMonths(1) & "#")
    Dim sum = t.DataTable.compute("sum(支出金额)", "支出类型='" & s & "' and 支出日期 >= #" & d & "# and 支出日期 < #" & d.AddMonths(1) & "#")

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


加好友 发短信
等级:九尾狐 帖子:2701 积分:17993 威望:0 精华:0 注册:2013/4/9 10:41:00
  发帖心情 Post By:2018/9/16 22:33:00 [只看该作者]

感谢 感谢 

如果红色的部分分别加入日期列可以吗?蓝色的部分加入 时间列的同时只计算相同的最后一行,比如蓝色代码最后一个月有两次或者多长相同的 欠款名称只计算相同的最后一行,感谢 感谢 
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 = {"财务_待收款","订单日期“,"资产时态_在投资金","更新日期”,"未支付合计",“回款日期”} 'nms和sm2是按照列的合计计算.

Dim nms3() As String = {"欠款明细"}
Dim nms4() As String = {“欠款名称”,"欠款合计",“欠款日期”} 'nms3和sm4是按照列的最后一行计算.

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) & "%"
    Series.TooltipText = nms(i) & " : {#YVAL}" '显示数据
    series.DataLabelText = "{#YVAL}" '显示数据
Next
For i As Integer = 0 To nms3.Length - 1
    Dim r As Row = Tables(nms3(i)).Rows(Tables(nms3(i)).count-1)
    Series = Chart.SeriesList.Add() '增加一个图系
    Series.Length = 1 '一个系列只能包括一个值
    Series.Text = nms3(i) & "(" & r(nms4(i)) & ")"
    Series.Y(0) = r(nms4(i))
    Series.DataLabelText = r(nms4(i))

    Series.TooltipText = nms3(i) & " : {#YVAL}" '显示数据
    series.DataLabelText = "{#YVAL}" '显示数据
Next

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


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

上传具体实例测试你说的问题。

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


加好友 发短信
等级:九尾狐 帖子:2701 积分:17993 威望:0 精华:0 注册:2013/4/9 10:41:00
  发帖心情 Post By:2018/9/16 23:17:00 [只看该作者]


感谢 就是计算当月合计,只是负载汇总表 在加上一个条件,只计算当月支出项目列不相同列的最后一行,感谢 感谢
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:统计图表学习2.table


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

图片点击可在新窗口打开查看此主题相关图片如下:qq截图20180916231341.png
图片点击可在新窗口打开查看
 
图片点击可在新窗口打开查看此主题相关图片如下:qq截图20180916231312.png
图片点击可在新窗口打开查看
[此贴子已经被作者于2018/9/16 23:17:34编辑过]

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


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

Dim Chart As WinForm.Chart '定义一个图表变量
Dim Series As WinForm.ChartSeries '定义一个图系变量
Chart=e.form.Controls("Chart1") ' 引用窗口中的图表

Chart.SeriesList.Clear() '清除图表原来的图系
Chart.VisualEffect = True '加上这一行,让你的图表更漂亮
Chart.ChartType = ChartTypeEnum.Pie '图表1类型改为Bar(条形)
Dim nms1() As String = {"经营汇总","支出汇总"}
Dim nms2() As String = {"变动金额", "支出金额"}
Dim nms3() As String = {"经营日期", "支持日期"}
Dim nms4() As String = {"经营项目", "支出项目"}

For i As Integer = 0 To nms1.Length - 1
    Dim d As Date = new Date(Date.Today.Year, Date.Today.Month, 1)
    For Each s As String In DataTables(nms1(i)).GetValues(nms4(i), nms4(i) & " Is not null And " & nms3(i) & " >= #" & d & "# and " & nms3(i) & " < #" & d.AddMonths(1) & "#")
        Dim sum As Double = DataTables(nms1(i)).compute("sum(" & nms2(i) & ")", nms4(i) & "='" & s & "' and " & nms3(i) & " >= #" & d & "# and " & nms3(i) & " < #" & d.AddMonths(1) & "#")
        Series = Chart.SeriesList.Add() '增加一个图系
        Series.Length = 1 '一个系列只能包括一个值
        Series.Text = s & "(" & sum & ")" '设置图系的标题
        Series.Y(0) = sum
        Series.TooltipText = s & " : {#YVAL}" '显示数据
        Series.DataLabelText = sum
    Next
Next
Chart.LegendVisible = True '显示图列


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


加好友 发短信
等级:九尾狐 帖子:2701 积分:17993 威望:0 精华:0 注册:2013/4/9 10:41:00
  发帖心情 Post By:2018/9/17 10:01:00 [只看该作者]

感谢 感谢 太感谢 

如果要把这个每个表显示的图表分开一个怎么做啊 感谢 感谢 
每个分开的表在细分每个表的类别和品种,感谢 感谢
图片点击可在新窗口打开查看此主题相关图片如下:qq截图20180917095928.jpg
图片点击可在新窗口打开查看
Dim Chart As WinForm.Chart '定义一个图表变量
Dim Series As WinForm.ChartSeries '定义一个图系变量
Chart= Forms("图表学习2").Controls("Chart1") ' 引用窗口中的图表
Chart.SeriesList.Clear() '清除图表原来的图系
Chart.VisualEffect = True '加上这一行,让你的图表更漂亮
Chart.ChartType = ChartTypeEnum.Pie '图表1类型改为Bar(条形)
Dim nms1() As String = {"经营汇总","支出汇总"}
Dim nms2() As String = {"变动金额", "支出金额"}
Dim nms3() As String = {"经营日期", "支持日期"}
Dim nms4() As String = {"经营项目", "支出项目"}
For i As Integer = 0 To nms1.Length - 1
    Dim d As Date = new Date(Date.Today.Year, Date.Today.Month, 1)
    For Each s As String In DataTables(nms1(i)).GetValues(nms4(i), nms4(i) & " Is not null And " & nms3(i) & " >= #" & d & "# and " & nms3(i) & " < #" & d.AddMonths(1) & "#")
        Dim sum As Double = DataTables(nms1(i)).compute("sum(" & nms2(i) & ")", nms4(i) & "='" & s & "' and " & nms3(i) & " >= #" & d & "# and " & nms3(i) & " < #" & d.AddMonths(1) & "#")
        Series = Chart.SeriesList.Add() '增加一个图系
        Series.Length = 1 '一个系列只能包括一个值
        Series.Text = s & "(" & sum & ")" '设置图系的标题
        Series.Y(0) = sum
        Series.TooltipText = s & " : {#YVAL}" '显示数据
        Series.DataLabelText = sum    
        If r("产品") = "PD05" Then '如果是产品PD05
            Series.Offset = 20 '那么图系偏离中心点20个像素.
        End If
    Next
Next
Chart.LegendVisible = True '显示图列



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


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

 

[此贴子已经被作者于2018/9/17 10:07:27编辑过]

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


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

测试了一下,做不到你需要的功能,设置颜色可以。

 

Dim Chart As WinForm.Chart '定义一个图表变量
Dim Series As WinForm.ChartSeries '定义一个图系变量
Chart=e.form.Controls("Chart1") ' 引用窗口中的图表

Chart.SeriesList.Clear() '清除图表原来的图系
Chart.VisualEffect = True '加上这一行,让你的图表更漂亮
Chart.ChartType = ChartTypeEnum.Pie '图表1类型改为Bar(条形)
Dim nms1() As String = {"经营汇总","支出汇总"}
Dim nms2() As String = {"变动金额", "支出金额"}
Dim nms3() As String = {"经营日期", "支持日期"}
Dim nms4() As String = {"经营项目", "支出项目"}
Dim cls() = {Color.red, Color.blue}

For i As Integer = 0 To nms1.Length - 1
    Dim d As Date = new Date(Date.Today.Year, Date.Today.Month, 1)
    For Each s As String In DataTables(nms1(i)).GetValues(nms4(i), nms4(i) & " Is not null And " & nms3(i) & " >= #" & d & "# and " & nms3(i) & " < #" & d.AddMonths(1) & "#")
        Dim sum As Double = DataTables(nms1(i)).compute("sum(" & nms2(i) & ")", nms4(i) & "='" & s & "' and " & nms3(i) & " >= #" & d & "# and " & nms3(i) & " < #" & d.AddMonths(1) & "#")
        Series = Chart.SeriesList.Add() '增加一个图系
        Series.Length = 1 '一个系列只能包括一个值
        Series.Text = s & "(" & sum & ")" '设置图系的标题
        Series.Y(0) = sum
        Series.TooltipText = s & " : {#YVAL}" '显示数据
        Series.DataLabelText = sum
        Series.FillColor = cls(i)
    Next
Next
Chart.LegendVisible = True '显示图列


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


加好友 发短信
等级:九尾狐 帖子:2701 积分:17993 威望:0 精华:0 注册:2013/4/9 10:41:00
  发帖心情 Post By:2018/9/17 10:19:00 [只看该作者]

好的 太感谢了,这样就已经很好了, 感谢 感谢 

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


加好友 发短信
等级:九尾狐 帖子:2701 积分:17993 威望:0 精华:0 注册:2013/4/9 10:41:00
  发帖心情 Post By:2018/9/18 22:05:00 [只看该作者]

能再帮忙看看吗?就是负载汇总表计算当月的 欠款名称相同的最后一行,比如 欠款名称列有A 和B  而且有重复的,但是只计算A和B分别的最后一行,感谢 感谢 

.NET Framework 版本:2.0.50727.8793
Foxtable 版本:2018.8.30.1
错误所在事件:窗口,图表学习2,Button3,Click
详细错误信息:
索引超出了数组界限。

Dim Chart As WinForm.Chart '定义一个图表变量
Dim Series As WinForm.ChartSeries '定义一个图系变量
Chart=e.form.Controls("Chart1") ' 引用窗口中的图表
Chart.SeriesList.Clear() '清除图表原来的图系
Chart.VisualEffect = True '加上这一行,让你的图表更漂亮
Chart.ChartType = ChartTypeEnum.Pie '图表1类型改为Bar(条形)
Dim nms1() As String = {"经营汇总","支出汇总","负载汇总"}
Dim nms2() As String = {"变动金额","支出金额","欠款金额"}
Dim nms3() As String = {"经营日期","支持日期","欠款日期"}
Dim nms4() As String = {"经营项目","支出项目","欠款名称"}
Dim cls() = {Color.red, Color.blue}
For i As Integer = 0 To nms1.Length - 1
    Dim d As Date = new Date(Date.Today.Year, Date.Today.Month, 1)
    For Each s As String In DataTables(nms1(i)).GetValues(nms4(i), nms4(i) & " Is not null And " & nms3(i) & " >= #" & d & "# and " & nms3(i) & " < #" & d.AddMonths(1) & "#")
        Dim sum As Double = DataTables(nms1(i)).compute("sum(" & nms2(i) & ")", nms4(i) & "='" & s & "' and " & nms3(i) & " >= #" & d & "# and " & nms3(i) & " < #" & d.AddMonths(1) & "#")
        Series = Chart.SeriesList.Add() '增加一个图系
        Series.Length = 1 '一个系列只能包括一个值
        Series.Text = s & "(" & sum & ")" '设置图系的标题
        Series.Y(0) = sum
        Series.TooltipText = s & " : {#YVAL}" '显示数据
        Series.DataLabelText = sum
        Series.FillColor = cls(i)
    Next
Next
Chart.LegendVisible = True '显示图列

 回到顶部
总数 43 上一页 1 2 3 4 5 下一页