以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  交叉统计问题  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=130872)

--  作者:jq_shang
--  发布时间:2019/2/9 0:33:00
--  交叉统计问题
1、由于筛选条件是按年度按季度筛选,本人不会在交叉统计的条件中,设置筛选条件表达式,所以,只好用筛选树筛选,或者用代码筛选;
2、对于经过筛选的数据,可以利用菜单功能组中的交叉统计功能,进行交叉统计;
3、我想把上述筛选以及交叉统计,集成一个窗口,却出现错误,筛选条件没有生效,统计了所有的记录;
4、在窗口中选择年度,选择季度,筛选结果不成问题,交叉统计的命令是从菜单栏原样拷贝的,在菜单栏执行正常,在窗口中执行就不正常了,请教如何改正?
Dim cb1 As WinForm.ComboBox = e.Form.Controls("ComboBox1")\'年度
Dim cb2 As WinForm.ComboBox = e.Form.Controls("ComboBox2")\'季度
Dim y As Integer = cb1.Value
Dim q As Integer = cb2.Value

Dim dt1 As New Date(y, 3 * (q - 1) + 1, 1) \'获取该季度的第一天
Dim dt2 As New Date(y, 3 * q, Date.DaysInMonth(y,3 * q)) \'获取该季度的最后一天
Dim Filter As String
Filter = "日期 >= #" & dt1 & "# And 日期 <= #" & dt2 & "#" 
Tables("技能考察表").Filter = Filter

\'以上代码执行正确,单独执行以上代码后,利用菜单栏交叉统计,结果正确。

\'以下代码是从菜单栏交叉统计中,复制出来的代码,放在窗口中执行,前面的筛选不起作用了。

Dim g As New CrossTableBuilder("季度汇总表", DataTables("技能考察表"))
g.HGroups.AddDef("日期", DateGroupEnum.Year, "年度")
g.HGroups.AddDef("日期", DateGroupEnum.Quarter, "季度")
g.HGroups.AddDef("姓名")
g.VGroups.AddDef("项目")
g.VGroups.AddDef("日期", "{0}月")
g.Totals.AddDef("考察分数", AggregateEnum.Max, "考察分数")
g.Build()
MainTable = Tables("季度汇总表")

感觉是table和datatable的问题,交叉统计第一句改成:
Dim g As New CrossTableBuilder("季度汇总表", Tables("技能考察表").datatable)
也不行。
总之,对于同样的筛选结果,菜单栏能对筛选结果进行正确的交叉统计,窗口命令统计的却是全部数据。

--  作者:有点甜
--  发布时间:2019/2/10 11:45:00
--  

Dim cb1 As WinForm.ComboBox = e.Form.Controls("ComboBox1")\'年度
Dim cb2 As WinForm.ComboBox = e.Form.Controls("ComboBox2")\'季度
Dim y As Integer = cb1.Value
Dim q As Integer = cb2.Value


Dim dt1 As New Date(y, 3 * (q - 1) + 1, 1) \'获取该季度的第一天
Dim dt2 As New Date(y, 3 * q, Date.DaysInMonth(y,3 * q)) \'获取该季度的最后一天
Dim Filter As String
Filter = "日期 >= #" & dt1 & "# And 日期 <= #" & dt2 & "#"
Tables("技能考察表").Filter = Filter

 

Dim g As New CrossTableBuilder("季度汇总表", DataTables("技能考察表"))
g.HGroups.AddDef("日期", DateGroupEnum.Year, "年度")
g.HGroups.AddDef("日期", DateGroupEnum.Quarter, "季度")
g.HGroups.AddDef("姓名")
g.VGroups.AddDef("项目")
g.VGroups.AddDef("日期", "{0}月")
g.Totals.AddDef("考察分数", AggregateEnum.Max, "考察分数")

g.filter = Filter
g.Build()
MainTable = Tables("季度汇总表")


--  作者:jq_shang
--  发布时间:2019/2/13 21:08:00
--  
版主真甜!谢谢!