Foxtable(狐表)用户栏目专家坐堂 → 怎么才能筛选时间生成图表呢


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

主题:怎么才能筛选时间生成图表呢

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


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2013/3/14 17:00:00 [显示全部帖子]

筛选指定月份的数据

 

Dim y As Integer = e.form.Controls("年份输入框").Value '指定年份
Dim m As Integer = e.form.Controls("月份输入框").Value '指定月份
Dim dt1 As New Date(y, m, 1)
Dim dt2 As New Date(y, m, Date.DaysInMonth(2011,6)) '获取该月的最后一天
Tables("表名").Filter = "日期 >= #" & dt1 & "# And 日期 <= #" & dt2 & "#"


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


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2013/3/14 18:05:00 [显示全部帖子]

根据合成的条件得到统计表,有了统计表,怎么生成图表, 你应该会了吧?

 

Dim y As Integer = e.form.Controls("年份输入框").Value '指定年份
Dim m As Integer = e.form.Controls("月份输入框").Value '指定月份
Dim dt1 As New Date(y, m, 1)
Dim dt2 As New Date(y, m, Date.DaysInMonth(2011,6)) '获取该月的最后一天
Dim b As New CrossTableBuilder("统计表1",DataTables("订单"))
b.HGroups.AddDef("客户") '添加客户列用于水平分组
b.VGroups.AddDef("日期",DateGroupEnum.Year,"{0}年") '添加日期列用于垂直分组,按年分组
b.VGroups.AddDef("日期","{0}月") '添加日期列用于垂直分组,按月分组
b.Totals.AddDef("数量") '添加数量列用于统计
b.Filter =  = "日期 >= #" & dt1 & "# And 日期 <= #" & dt2 & "#"
b.Build '生成统计表
Maintable = Tables("统计表1") '打开生成的统计表 

 


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


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2013/3/19 15:23:00 [显示全部帖子]

以下是引用keeryq在2013-3-18 20:45:00的发言:
我筛选出来再做一个统计表 然后绑定统计表做图表 生成的还是全部的数据的 这是为什么呢

 

你做个简单的例子发上来吧,输入一些测试数据,写好代码,再说明问题


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


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2013/3/19 16:26:00 [显示全部帖子]

你做个简单的例子发上来吧,输入一些测试数据,写好代码,再说明问题。

学会提炼问题做成简单例子,问题解决的速度会非常快。


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


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2013/3/21 10:25:00 [显示全部帖子]

注意红色的,你要设置统计条件:

 

'------------------------------筛选条件-------------------------------
Dim Filter As String
With e.Form.Controls("产品组")
    If .Value IsNot Nothing Then
        Filter = "培训_产品组1 = '" & .Value & "'"
    End If
End With
With e.Form.Controls("StartDate")
    If .Value IsNot Nothing Then
        If Filter >"" Then
            Filter = Filter & " And "
        End If
        Filter = Filter & "培训_时间1 >= #" & .Value & "#"
    End If
End With
With e.Form.Controls("EndDate")
    If .Value IsNot Nothing Then
        If Filter >"" Then
            Filter = Filter & " And "
        End If
        Filter = Filter & "培训_时间1 <= #" & .Value & "#"
    End If
End With

'------------------------------------生成统计表------------------------
Dim g As New GroupTableBuilder("统计表2", DataTables("学员基础信息"))
g.Groups.AddDef("培训_产品组1", "产品组")
g.Totals.AddDef("ITC_ITC1_Pretest", AggregateEnum.Max, "PretestMAX")
g.Totals.AddDef("ITC_ITC1_Pretest", AggregateEnum.Min, "PretestMIN")
g.Totals.AddDef("ITC_ITC1_PostTest", AggregateEnum.Max, "PostTestMAX")
g.Totals.AddDef("ITC_ITC1_PostTest", AggregateEnum.Min, "PostTestMIN")
g.Totals.AddDef("ITC_ITC1_RolePlay", AggregateEnum.Max, "RolePlayMAX")
g.Totals.AddDef("ITC_ITC1_RolePlay", AggregateEnum.Min, "RolePlayMIN")
g.Totals.AddDef("ITC_ITC1_PPT", AggregateEnum.Max, "PPTMAX")
g.Totals.AddDef("ITC_ITC1_PPT", AggregateEnum.Min, "PPTMIN")
g.filter = Filter
g.Build()
'-------------------------------------生成图表---------------------------
Dim Chart As WinForm.Chart '定义一个图表变量
Dim Series As WinForm.ChartSeries '定义一个图系变量
Dim t As Table = Tables("统计表2") '定义一个变量t引用数据表
Chart = e.Form.Controls("Chart1") ' 引用窗口中的图表
Chart.ChartType = ChartTypeEnum.Bar '图表类型改为Bar(条形)
Chart.DataSource = "统计表2" '设置绑定表
Chart.SeriesList.Clear() '清除图表原来的图系
For Each c As Col In t.Cols
    If c.Name <> "产品组" Then
        Series = Chart.SeriesList.Add() '增加一个图系
        Series.Text = c.Name '设置图系的标题
        Series.X.DataField = "产品组" 'X轴绑定到产品列
        Series.Y.DataField = c.Name '设置Y轴的绑定列
    End If
Next
'Chart.VisualEffect = True '加上这一行,让你的图表更漂亮
Chart.LegendVisible = True '显示图列
Chart.LegendCompass= CompassEnum.South '图列显示在南方(底端)


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


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2013/3/21 10:55:00 [显示全部帖子]

这个没有办法直接用刚筛选实现,只能编码,或者用sql语句,例如求出每个产品最多和最少的一次订购数量:

 

select 产品名称, max(数量) As 最多, min(数量) As 最少 From {订单} Group by 产品名称


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


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2013/3/21 11:04:00 [显示全部帖子]

统计之后在增加一个表达式列:

 

'生成统计表
DataTables(”统计表").DataCols.Add("新列名称",GetType(Double),"人天总计/总人数")

Tables("统计表").Cols("人天总计").Visible = False
Tables("统计表").Cols("总人数").Visible = False


 


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


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2013/3/21 11:55:00 [显示全部帖子]

例如你加个按钮,按钮代码:

 

Dim g As New GroupTableBuilder("统计表1", DataTables("课程信息"))
g.Groups.AddDef("培训时间", DateGroupEnum.Year, "年")
g.Totals.AddDef("实际人数")
g.Totals.AddDef("人天统计")
g.Build()
DataTables("统计表1").DataCols.Add(" 新列",Gettype(Double),"人天统计/实际人数")

Dim Chart As WinForm.Chart '定义一个图表变量
Dim Series As WinForm.ChartSeries '定义一个图系变量
Chart= e.Form.Controls("Chart1") ' 引用窗口中的图表
Chart.DataSource = "统计表1" '设置绑定表
Chart.SeriesList.Clear() '清除图表原来的图系
Series = Chart.SeriesList.Add() '增加一个图系
Series.X.DataField = "年" 'X轴绑定到月份列
Series.Y.DataField = " 新列" 'Y轴绑定到数量列
Chart.AxisX.MinorTick = False

 

 


 回到顶部