以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  饼型图型如何实现跳过统计表  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=133863)

--  作者:东方威思顿
--  发布时间:2019/4/22 14:32:00
--  饼型图型如何实现跳过统计表
老师,您好,如何实现在饼型图型中直接在代码中加入统计代码,无需生成统计表?线型条型的都能实现,但是饼型的图型的时候代码一直显示代码错误。

--  作者:有点甜
--  发布时间:2019/4/22 15:02:00
--  

 

具体实例发上来测试。

 

 


--  作者:东方威思顿
--  发布时间:2019/4/22 15:24:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.zip


--  作者:有点甜
--  发布时间:2019/4/22 15:37:00
--  
Dim Chart As WinForm.Chart \'定义一个图表变量
Dim Series As WinForm.ChartSeries \'定义一个图系变量
Dim tbl As DataTable = DataTables("月报表") \'定义一个变量tbl引用数据表
Dim lst As List(Of String) = tbl.GetValues("供应商") \'获得产品名称集合
Dim sm As Integer = tbl.Compute("count(供应商)") \'计算总数量
Chart = e.Form.Controls("Chart1") \' 引用窗口中的图表
Chart.VisualEffect = True
Chart.ChartType = ChartTypeEnum.pie \'设置图表类型
For Each gys As String In lst
    Series = Chart.SeriesList.Add() \'增加一个图系
    Series.Length = 1 \'一个系列只能包括一个值
    Series.Text = gys
    Series.Y(0) = tbl.Compute("count(供应商)", "供应商=\'" & gys & "\'")
    Series.DataLabelText = Math.Round(Series.Y(0)*100/sm,2) & "%" \'计算百分比
Next
Chart.LegendVisible = True \'显示图列
Chart.LegendCompass= CompassEnum.East \'图列显示在东方(右方)

--  作者:东方威思顿
--  发布时间:2019/4/22 16:32:00
--  
甜老师,您好,实例是单独统计的3月份的数据形成的图表,如果一年的数据整合在一个数据表中,我想达到的效果是根据数据表中每月的数据能生成一个单独的每月的图表和生成一个全年的图表,这样的形式应该如何实现?谢谢
--  作者:有点甜
--  发布时间:2019/4/22 17:09:00
--  

For i As Integer = 1 To 12
    Dim d1 As Date = new Date(1999, i,  1)
    Dim d2 As Date = d1.AddMonths(1)
    Dim filter As String = "日期 >= \'" & Format(d1, "MM.dd") & "\' and 日期 < \'" & Format(d2, "MM.dd") & "\'"
    Dim Chart As New ChartBuilder  \'定义一个图表变量
    Dim Series As WinForm.ChartSeries \'定义一个图系变量
    Dim tbl As DataTable = DataTables("月报表") \'定义一个变量tbl引用数据表
    Dim lst As List(Of String) = tbl.GetValues("供应商", filter) \'获得产品名称集合
    Dim sm As Integer = tbl.Compute("count(供应商)", filter) \'计算总数量
    Chart.VisualEffect = True
    Chart.ChartType = ChartTypeEnum.pie \'设置图表类型
    Chart.HeaderText = i & "月"
    For Each gys As String In lst
        Series = Chart.SeriesList.Add() \'增加一个图系
        Series.Length = 1 \'一个系列只能包括一个值
        Series.Text = gys
        Series.Y(0) = tbl.Compute("count(供应商)", "供应商=\'" & gys & "\' and " & filter)
        Series.DataLabelText = Math.Round(Series.Y(0)*100/sm,2) & "%" \'计算百分比
    Next
    Chart.LegendVisible = True \'显示图列
    Chart.LegendCompass= CompassEnum.East \'图列显示在东方(右方)
    chart.width = 300
    Chart.left = 300*(i-1)
    Chart.height = 300
    e.Form.AddControl(Chart)
Next
e.Form.panel.autoscroll = True


--  作者:东方威思顿
--  发布时间:2019/4/23 14:17:00
--  
甜老师,您好,我想实现的是图型如图1所示,每个月都有一个单独的窗口图片,不想如图2所示这样并列在一块显示,这样的功能可以实现吗?

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

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


--  作者:有点甜
--  发布时间:2019/4/23 15:52:00
--  

 

那你就弄12个chart控件,一个一个的写代码生成。

 

 


--  作者:东方威思顿
--  发布时间:2019/4/23 17:10:00
--  
甜老师,如果我的数据表中包括2019年1月份、2月份、3月份,现在的日期是4月份,我只想统计上个月的数据(即3月份),以此类推,5月份统计4月份,想实现这个功能如何更改编码?
--  作者:有点甜
--  发布时间:2019/4/23 17:23:00
--  

Dim d As Date = Date.Today
Dim d1 As Date = new Date(1999, d.month,  1)
Dim d2 = d1.AddMonths(-1)
Dim filter As String = "日期 >= \'" & Format(d2, "MM.dd") & "\' and 日期 < \'" & Format(d1, "MM.dd") & "\'"
Dim Chart As WinForm.Chart = e.Form.Controls("Chart1")
Dim Series As WinForm.ChartSeries \'定义一个图系变量
Dim tbl As DataTable = DataTables("月报表") \'定义一个变量tbl引用数据表
Dim lst As List(Of String) = tbl.GetValues("供应商", filter) \'获得产品名称集合
Dim sm As Integer = tbl.Compute("count(供应商)", filter) \'计算总数量
Chart.VisualEffect = True
Chart.ChartType = ChartTypeEnum.pie \'设置图表类型
Chart.HeaderText = d2.month & "月"
For Each gys As String In lst
    Series = Chart.SeriesList.Add() \'增加一个图系
    Series.Length = 1 \'一个系列只能包括一个值
    Series.Text = gys
    Series.Y(0) = tbl.Compute("count(供应商)", "供应商=\'" & gys & "\' and " & filter)
    Series.DataLabelText = Math.Round(Series.Y(0)*100/sm,2) & "%" \'计算百分比
Next
Chart.LegendVisible = True \'显示图列
Chart.LegendCompass= CompassEnum.East \'图列显示在东方(右方)