以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  统计学习  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=75592)

--  作者:yangwenghd
--  发布时间:2015/10/11 1:53:00
--  统计学习


如果趋势图根据窗口表点击的去显示应该怎么做啊 
比如
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:统计.table

选择日期范围
选择 ComboBox6 的选项 ,全部、列名(企业名称、业务员、类型)
点击列表(会显示出对于的数据到Table10)
选择 Panel2 里面的数据 (销售额、成本合计、利润合计、采购成本、返点成本)
选择ComboBox11(年月季周日) 图表X的间隔距离
点击Button63 生成趋势图 到 Chart1  
如果ComboBox6 选择的“全部”  图标就显示全部 
选择ComboBox6 选择的 (企业名称、业务员、类型) 点击列表,图标就显示 Table10鼠标选择的数据 
比如 选择企业名称 点击列表,Table10就会显示时间范围的所有企业名称(有某某公司),点击某某公司,图表就只是显示某某公司的图标 如果选择业务员 点击列表 在选择Table10 里面的某个业务员,图表就显示业务员的图标 如果选择 类型,就显示类型的图表。
感谢 感谢 

--  作者:大红袍
--  发布时间:2015/10/11 10:25:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:统计.table


--  作者:yangwenghd
--  发布时间:2015/10/11 17:36:00
--  
Dim c6 As String = e.Form.controls("ComboBox6").Value
If c6 <> "全部" Then
    Dim tt As Table = e.Form.Controls("Table10").Table
    If tt.Current IsNot Nothing Then
        filter1 &= " and " & c6 & " = \'" & tt.Current(c6) & "\'"
    End If
End If

Dim tp As DateGroupEnum = 0

Dim g As New GroupTableBuilder("临时统计表", DataTables("表A"))
g.Groups.AddDef("订单日期", tp, "日期")
g.Totals.AddDef("销售额")
g.Totals.AddDef("成本合计")
g.Totals.AddDef("利润合计")
g.Totals.AddDef("采购成本")
g.Totals.AddDef("返点成本")
g.Filter = filter1
g.Build()

Dim Chart As WinForm.Chart \'定义一个图表变量
Dim Series As WinForm.ChartSeries \'定义一个图系变量
Dim t As Table = Tables("临时统计表") \'定义一个变量t引用数据表
Dim sm As Integer = t.Compute("Sum(销售额)") \'计算总数量
Chart= Forms("统计窗口").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(c6) & "(" & r("销售额") & ")" \'设置图系的标题
    Series.Y(0) = r("销售额") \'指定值
    Series.DataLabelText = Math.Round(r("销售额")*100/sm,2) & "%" \'计算百分比
Next
Chart.LegendVisible = True \'显示图列
Chart.LegendCompass= CompassEnum.East \'图列显示在东方(右方)

能帮忙看看这段吗?
不知道是那里没对,还是显示不出来结果 。

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


图片点击可在新窗口打开查看此主题相关图片如下:显示百分比.png
图片点击可在新窗口打开查看


--  作者:大红袍
--  发布时间:2015/10/11 20:25:00
--  

Dim d1 As Date = e.Form.Controls("DateTimePicker5").Value
If d1 = Nothing Then d1 = Date.Today
Dim filter1 As String = ""
If e.Form.Controls("RadioButton1").Checked Then
    filter1 = "订单日期 = #" & d1 & "#"
ElseIf e.Form.Controls("RadioButton2").Checked Then
    Dim w As Integer = d1.DayOfWeek \'算出今天是星期几
    Dim dt1 As Date = d1.AddDays(0 - w) \'获取本周的第一天 ,星期一到星期天
    Dim dt2 As Date = d1.AddDays(6 - w) \'获取本周的最后一天
    filter1 = "订单日期 >= #" & dt1 & "# and 订单日期 <= #" & dt2 & "#"
Else If e.Form.Controls("RadioButton3").Checked Then
    Dim y As Integer = d1.Year
    Dim m As Integer = d1.Month
    Dim dt1 As New Date(y, m, 1)
    Dim dt2 As New Date(y, m, Date.DaysInMonth(y, m)) \'获取本月的最后一天
   
    filter1 = "订单日期 >= #" & dt1 & "# and 订单日期 <= #" & dt2 & "#"
Else If e.Form.Controls("RadioButton4").Checked Then
    Dim y As Integer = d1.Year
    Dim q As Integer = (d1.Month - 1) \\ 3 + 1 \'计算现在是第几个季度
    Dim dt1 As New Date(y, 3 * (q - 1) + 1, 1) \'获取本季度的第一天
    Dim dt2 As New Date(y, 3 * q, Date.DaysInMonth(y,3 * q)) \'获取本季度的最后一天
   
    filter1 = "订单日期 >= #" & dt1 & "# and 订单日期 <= #" & dt2 & "#"
Else If e.Form.Controls("RadioButton5").Checked Then
    Dim y As Integer = d1.Year
    Dim dt1 As New Date(y, 1, 1)
    Dim dt2 As New Date(y, 12, 31)
   
    filter1 = "订单日期 >= #" & dt1 & "# and 订单日期 <= #" & dt2 & "#"
Else If e.Form.Controls("RadioButton6").Checked Then
    filter1 = "1=1"
Else If e.Form.Controls("RadioButton14").Checked Then
    filter1 = "订单日期 < #" & d1 & "#"
End If

Dim c6 As String = e.Form.controls("ComboBox6").Value
If c6 <> "全部" Then
    Dim tt As Table = e.Form.Controls("Table10").Table
    If tt.Current IsNot Nothing Then
        filter1 &= " and " & c6 & " = \'" & tt.Current(c6) & "\'"
    End If
End If

Dim tp As DateGroupEnum = 0

Dim g As New GroupTableBuilder("临时统计表", DataTables("表A"))
g.Groups.AddDef("订单日期", tp, "日期")
g.Totals.AddDef("销售额")
g.Totals.AddDef("成本合计")
g.Totals.AddDef("利润合计")
g.Totals.AddDef("采购成本")
g.Totals.AddDef("返点成本")
g.Filter = filter1
g.Build()

\'Dim t As Table = Tables("临时统计表")
\'t.Sort = "日期"

Dim Chart As WinForm.Chart \'定义一个图表变量
Dim Series As WinForm.ChartSeries \'定义一个图系变量
Dim t As Table = Tables("临时统计表") \'定义一个变量t引用数据表
Dim sm As Integer = 0
Chart= Forms("统计窗口").Controls("Chart1") \' 引用窗口中的图表
chart.SeriesList.Clear
chart.AxisX.ClearValueLabel
Chart.VisualEffect = True \'加上这一行,让你的图表更漂亮
Chart.ChartType = ChartTypeEnum.Pie \'图表1类型改为Bar(条形)
For Each r As Row In t.Rows
    For Each c As Col In t.Cols
        If c.name <> "日期" Then
            sm += r(c.name)
        End If
    Next
    For Each c As Col In t.Cols
        If c.name <> "日期" Then
            Series = Chart.SeriesList.Add() \'增加一个图系
            Series.Length = 1 \'一个系列只能包括一个值
            Series.Text = c.caption & "(" & r(c.name) & ")" \'设置图系的标题
            Series.Y(0) = r(c.name) \'指定值
            Series.DataLabelText = Math.Round(r(c.name)*100/sm,2) & "%" \'计算百分比
        End If
    Next
Next
Chart.LegendVisible = True \'显示图列
Chart.LegendCompass= CompassEnum.East \'图列显示在东方(右方)


--  作者:yangwenghd
--  发布时间:2015/10/11 20:59:00
--  
感谢 感谢 
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:圆柱统计学习.table

能教教最后一种表吗?

选择时间范围
X轴 显示 Panel2  用圆柱显示Table10里面的内容,
比如 选择时间范围 然后ComboBox6(企业名称、业务员、类型) 点击列表 选择Panel2 点击生成图标按钮 然后图标X轴显示 销售额 成本合计 利润合计 采购合计 返点合计,根据选择的显示 在销售额图表显示 Table10 显示的内容,用颜色不同圆柱显示 比如Table10 有企业名称 在销售额图表上面显示企业名称有那些,那个企业对应的销售额用圆柱显示到上面,如果选择了成本合计也这么显示 ,如果Table10显示业务员列表 在销售额图表上就显示那个销售员的销售额是多少 如果是类型 就以类型的数据在图表里面显示。
感谢 感谢 。

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

[此贴子已经被作者于2015/10/11 20:59:49编辑过]

--  作者:大红袍
--  发布时间:2015/10/11 21:34:00
--  
一样啊。看2楼。
--  作者:yangwenghd
--  发布时间:2015/10/11 21:50:00
--  
我就是用你帮我二楼的代码改的 怎么改都是只有一列 没有显示出很多列,最只要是在X轴 勾选就显示 不勾选就不显示一直没搞清楚,能指点指点吗? 感谢  感谢 啊
--  作者:大红袍
--  发布时间:2015/10/11 21:52:00
--  

Dim d1 As Date = e.Form.Controls("DateTimePicker5").Value
If d1 = Nothing Then d1 = Date.Today
Dim filter1 As String = ""
If e.Form.Controls("RadioButton1").Checked Then
    filter1 = "订单日期 = #" & d1 & "#"
ElseIf e.Form.Controls("RadioButton2").Checked Then
    Dim w As Integer = d1.DayOfWeek \'算出今天是星期几
    Dim dt1 As Date = d1.AddDays(0 - w) \'获取本周的第一天 ,星期一到星期天
    Dim dt2 As Date = d1.AddDays(6 - w) \'获取本周的最后一天
    filter1 = "订单日期 >= #" & dt1 & "# and 订单日期 <= #" & dt2 & "#"
Else If e.Form.Controls("RadioButton3").Checked Then
    Dim y As Integer = d1.Year
    Dim m As Integer = d1.Month
    Dim dt1 As New Date(y, m, 1)
    Dim dt2 As New Date(y, m, Date.DaysInMonth(y, m)) \'获取本月的最后一天
   
    filter1 = "订单日期 >= #" & dt1 & "# and 订单日期 <= #" & dt2 & "#"
Else If e.Form.Controls("RadioButton4").Checked Then
    Dim y As Integer = d1.Year
    Dim q As Integer = (d1.Month - 1) \\ 3 + 1 \'计算现在是第几个季度
    Dim dt1 As New Date(y, 3 * (q - 1) + 1, 1) \'获取本季度的第一天
    Dim dt2 As New Date(y, 3 * q, Date.DaysInMonth(y,3 * q)) \'获取本季度的最后一天
   
    filter1 = "订单日期 >= #" & dt1 & "# and 订单日期 <= #" & dt2 & "#"
Else If e.Form.Controls("RadioButton5").Checked Then
    Dim y As Integer = d1.Year
    Dim dt1 As New Date(y, 1, 1)
    Dim dt2 As New Date(y, 12, 31)
   
    filter1 = "订单日期 >= #" & dt1 & "# and 订单日期 <= #" & dt2 & "#"
Else If e.Form.Controls("RadioButton6").Checked Then
    filter1 = "1=1"
Else If e.Form.Controls("RadioButton14").Checked Then
    filter1 = "订单日期 < #" & d1 & "#"
End If

Dim Chart As WinForm.Chart = e.Form.Controls("Chart1") \' 引用窗口中的图表
Dim series As winform.ChartSeries
Chart.SeriesList.Clear() \'清除图表原来的图系
Chart.AxisX.ClearValueLabel
Chart = e.Form.Controls("Chart1") \' 引用窗口中的图表
Chart.ChartType = ChartTypeEnum.Bar \'图表类型改为Bar(条形)

Dim c6 As String = e.Form.controls("ComboBox6").Value
Dim g As New GroupTableBuilder("临时统计表", DataTables("表A"))
g.Groups.AddDef(c6)
g.Totals.AddDef("销售额")
g.Totals.AddDef("成本合计")
g.Totals.AddDef("利润合计")
g.Totals.AddDef("采购成本")
g.Totals.AddDef("返点成本")
g.Filter = filter1
g.Build()

Dim ls As new List(Of String)
Dim t As Table = Tables("临时统计表")
For i As Integer = 7 To 11
    Dim c As WinForm.CheckBox = e.Form.Controls("CheckBox" & i)
    If c.Checked Then
        ls.add(c.Text)
    End If
Next
For Each r As Row In t.Rows
   
    Series = Chart.SeriesList.Add() \'增加一个图系
    Series.Length = ls.count
    Series.TooltipText = r(c6) & " : {#YVAL}"
    Series.Text = r(c6)
    For i As Integer = 0 To ls.Count - 1
        Series.X(i) = i
        Series.Y(i) = r(ls(i))
        Chart.AxisX.SetValueLabel(i, ls(i)) \'指定字符表示
    Next
Next

Chart.LegendVisible = True \'显示图列
Chart.LegendCompass= CompassEnum.East \'图列显示在东方(右方)
Chart.AxisX.AnnoWithLabels = True \'启用字符标示


--  作者:yangwenghd
--  发布时间:2015/10/11 23:26:00
--  
有时候真不知道该怎么谢谢你 感谢 感谢 

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


--  作者:yangwenghd
--  发布时间:2015/10/11 23:37:00
--  

感谢 感谢 十分感谢 

如果要加上sum 是加在那里啊 



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