Foxtable(狐表)用户栏目专家坐堂 → 图表


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

主题:图表

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


加好友 发短信
等级:婴狐 帖子:38 积分:544 威望:0 精华:0 注册:2017/1/13 19:31:00
图表  发帖心情 Post By:2017/11/6 8:36:00 [只看该作者]

你好
目的是按给定的时间段和 NumericComboBox1里填入的数字(数字代表前几位,比如5则显示出现次数最多的前5位设备的信息)生成图表。怎么写前几位代码?

Dim mc As WinForm.NumericComboBox = e.Form.Controls("NumericComboBox1")

Dim Chart As WinForm.Chart
Dim Series As WinForm.ChartSeries
Dim t As DataTable = DataTables("设备维修单")
Dim pds As List(of String) = t.SQLGetValues("设备编号","[日期] > =  '" &  sqrq.value  & " ' And [日期] < = ' " &  zzrq.value  & "'")
Dim sm As Integer = t.SQLCompute("Count(设备编号)","[日期] > =  '" &  sqrq.value  & " ' And [日期] < = ' " &  zzrq.value  & "'")
Chart= e.Form.Controls("Chart1")
Chart.SeriesList.Clear()
Chart.AxisX.ClearValueLabel
Chart.VisualEffect = True
Chart.ChartType = ChartTypeEnum.Pie
For i As Integer = 0 To pds.Count - 1
    Series = Chart.SeriesList.Add()
    Series.Length = 1
    Dim pdt = val(t.SQLCompute("Count(设备编号)", "设备编号 = '" & pds(i) & "' and [日期] > =  '" &  sqrq.value  & " ' And [日期] < = ' " &  zzrq.value  & "'"))
    Series.Text = pds(i) & "(" & pdt & ")"
    Series.Y(0) = pdt
    Series.DataLabelText = Math.Round(pdt * 100 / sm,1) & "%"
Next

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


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

先进行分组统计得到表格,或者执行sql语句得到临时表

 

cmd.commandText = "select top 5 设备编号, count(*) as 次数 from {设备维修单} where [日期] >=  '" &  sqrq.value  & "' And [日期] <= '" &  zzrq.value  & "' group by 设备编号 order by count(*)"

 

http://www.foxtable.com/webhelp/scr/0696.htm

 

然后根据临时表dt的值,赋值给你的图表


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


加好友 发短信
等级:婴狐 帖子:38 积分:544 威望:0 精华:0 注册:2017/1/13 19:31:00
  发帖心情 Post By:2017/11/6 15:20:00 [只看该作者]

弄不出来,帮忙写下代码。谢谢!

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


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

如果不会写,那就先生成分组统计表,然后排序,取前五个数据

 

http://www.foxtable.com/webhelp/scr/0158.htm

 

http://www.foxtable.com/webhelp/scr/0677.htm

 


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


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

生成统计表后,参考 http://www.foxtable.com/webhelp/scr/0972.htm

 

不会做上传实例。


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


加好友 发短信
等级:婴狐 帖子:38 积分:544 威望:0 精华:0 注册:2017/1/13 19:31:00
  发帖心情 Post By:2017/11/6 16:11:00 [只看该作者]

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



下拉选择数字,选2,图表显示top 2,选5图表显示 top5

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


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

Dim sqrq As WinForm.DateTimePicker = e.Form.Controls("DateTimePicker1")
Dim zzrq As WinForm.DateTimePicker = e.Form.Controls("DateTimePicker2")
Dim pmc As WinForm.ComboBox = e.Form.Controls("ComboBox1")

If sqrq.value = Nothing OrElse zzrq.value = Nothing
    MessageBox.show("起始日期不能为空,请先选择起始日期","提示",MessageBoxButtons.OK,MessageBoxIcon.Warning)
    Return
Else
    Dim dt As DataTable
    Dim b As New GroupTableBuilder("设备故障统计表",DataTables("表A"))
    b.filter = "[日期] > =  #" &  sqrq.value  & "# And [日期] < #" &  zzrq.value.adddays(1)  & "#"
    b.Groups.AddDef("设备编号")
    b.Totals.AddDef("设备编号",AggregateEnum.Count, "故障次数")
    dt = b.Build(False)
   
    Dim Chart As WinForm.Chart
    Dim Series As WinForm.ChartSeries
    Dim pds = dt.Select("", "故障次数 desc")
    Dim sm As Integer = dt.Compute("Sum(故障次数)")
    Chart= e.Form.Controls("Chart1")
    Chart.SeriesList.Clear()
    Chart.AxisX.ClearValueLabel
    Chart.VisualEffect = True
    Chart.ChartType = ChartTypeEnum.Pie
    Dim num = iif(val(pmc.text)>pds.count, pds.count-1, val(pmc.text)-1)

    For i As Integer = 0 To num
        Series = Chart.SeriesList.Add()
        Series.Length = 1
        Series.Text = pds(i)("设备编号") & "(" & pds(i)("故障次数") & ")"
        Series.Y(0) = pds(i)("故障次数")
        Series.DataLabelText = Math.Round(pds(i)("故障次数") * 100 / sm,1) & "%"
    Next
    Chart.LegendVisible = True
    Chart.LegendCompass= CompassEnum.East
End If


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


加好友 发短信
等级:婴狐 帖子:38 积分:544 威望:0 精华:0 注册:2017/1/13 19:31:00
  发帖心情 Post By:2017/11/6 17:59:00 [只看该作者]

  Dim dt As DataTable
    Dim b As New GroupTableBuilder("设备故障统计表",DataTables("表A"))
    b.filter = "[日期] > =  #" &  sqrq.value  & "# And [日期] < #" &  zzrq.value.adddays(1)  & "#"
    b.Groups.AddDef("设备编号")
    b.Totals.AddDef("设备编号",AggregateEnum.Count, "故障次数")
    dt = b.Build(False)


怎么转成 出错

  Dim dt As DataTable
    Dim b As New SQLGroupTableBuilder("设备故障统计表","表A")
    b.filter = "[日期] > =  '" &  sqrq.value  & "' And [日期] < '" &  zzrq.value.adddays(1)  & "'"
    b.Groups.AddDef("设备编号")
    b.Totals.AddDef("设备编号",AggregateEnum.Count, "故障次数")
    dt = b.Build(False)


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


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

加上你的数据源名

 

b.ConnectionName = "aaa"


 回到顶部