Foxtable(狐表)用户栏目专家坐堂 → 统计学习


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

主题:统计学习

帅哥哟,离线,有人找我吗?
大红袍
  11楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/10/12 9:14:00 [只看该作者]

没看懂你什么意思,看5楼代码自己消化一下
[此贴子已经被作者于2015/10/12 9:14:06编辑过]

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


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

感谢 刚回来  我马上看,
意思就是  采购成本、返点成本,利润合计 分别在销售里面的比例,
不显示每一行的,显示 采购成本 返点成本 利润成本 的和 在销售额和的比例。
感谢感谢 

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/10/12 22:21: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
    sm = r("销售额")
    For Each c As Col In t.Cols
        If c.name <> "日期" andalso 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
  14楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


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

感谢 感谢 
可以是这种吗? 这个圆的数据是 销售额  ,然后,显示选择时间范围筛选到Table10的采购成本(筛选列的和)+返点成本(筛选列的和)+利润合计(筛选列的和)=销售额(筛选列的和) (100%) 

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


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/10/12 22:59: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.VerticalTotal = True
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(条形)
Dim r As Row = t.Rows(t.count-1)
sm = r("销售额")
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
Chart.LegendVisible = True '显示图列
Chart.LegendCompass= CompassEnum.East '图列显示在东方(右方)


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


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

可以不显示销售额吗? 销售额就是那一个整园,其他的都是在占销售额的比例 ,


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


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/10/12 23:39:00 [只看该作者]

If c.name <> "日期" Then

 

改成

 

If c.name <> "日期" andalso c.name <> "销售额" Then


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


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

谢谢 其实我一直 想明白 代码里面没有成本合计 利润合计 返点  采购合计  是用怎么一个表达方式让他们运算的啊

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/10/13 22:43:00 [只看该作者]

这里生成的临时表就是答案啊

 

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.VerticalTotal = True
g.Filter = filter1
g.Build()


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


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

懂了  只是如果选择销售额、成本合计、利润合计、采购成本、返点成本、然后把右边表格对于选择的生成图标比例又应该改那里啊!
比如时间范围,然后选择企业名称、类型、业务员、然后选择销售额或者成本合计、利润合计返点成本 ,然后显示出左边表格对于右边选择的列的比例,比如选择企业 、销售额,就显示在这个时间段 每个企业占销售额的多少 ,这样可以吗?

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


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