以文本方式查看主题
- Foxtable(狐表) (http://foxtable.com/bbs/index.asp)
-- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2)
---- [求助]如何让统计表根据筛选出来的数据实时更新统计结果 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=88320)
|
-- 作者:幸福地微笑
-- 发布时间:2016/7/31 21:30:00
-- [求助]如何让统计表根据筛选出来的数据实时更新统计结果
此主题相关图片如下:班级考情查询.jpg

如何让上方的统计表中的数据能根据筛选条件筛选出来的数据实时地更新统计结果?或者使用按钮进行刷新,应如何编写代码?
[此贴子已经被作者于2016/7/31 21:31:50编辑过]
|
-- 作者:幸福地微笑
-- 发布时间:2016/8/1 0:43:00
--
各位大神在哪?
|
-- 作者:大红袍
-- 发布时间:2016/8/1 9:43:00
--
参考
http://www.foxtable.com/webhelp/scr/1058.htm
|
-- 作者:幸福地微笑
-- 发布时间:2016/8/2 1:06:00
-- 回复:(大红袍)参考 http://www.foxtable....
仍是不能动态更新,筛选出数据后,统计的结果仍是没有筛选前的结果!没变!求解!
此主题相关图片如下:夺.jpg

|
-- 作者:狐狸爸爸
-- 发布时间:2016/8/2 11:20:00
--
1、首先你是怎么统计的? 2、任何统计都能设置统计条件的。 将统计条件设置为你的筛选条件即可: Dim b As New GroupTableBuilder("统计表1",DataTables("订单")) b.Filter = Tables("订单").Filter b.Groups.AddDef("产品") b.Totals.AddDef("数量") b.Build MainTable = Tables("统计表1")
|
-- 作者:幸福地微笑
-- 发布时间:2016/8/3 0:29:00
--
本人过于愚钝,还是搞不明白,还请指导!
我现在的作品中每定义一个条件,就立即更新筛选结果,如何让上面的统计结果也跟着筛选结果实时更新?
期待狐爸你的指导!
|
-- 作者:大红袍
-- 发布时间:2016/8/3 9:22:00
--
Dim nianfen As WinForm.ComboBox = e.Form.Controls("入学年份") Tables("成绩记录").Filter="入学年份 = \'" & nianfen.Text & " \' " For Each dr As DataRow In DataTables("班级考情分析").Select("") Dim dt As Table = Tables("成绩记录") dr("分布_40以下") = dt.Compute("Count(姓名)", dr("科目") & " < 40") dr("分布_40至60") = dt.Compute("Count(姓名)", dr("科目") & " >= 40 And " & dr("科目") & " < 60" ) dr("分布_60分段") = dt.Compute("Count(姓名)", dr("科目") & " >= 60 And " & dr("科目") & " < 70" ) dr("分布_70分段") = dt.Compute("Count(姓名)", dr("科目") & " >= 70 And " & dr("科目") & " < 80" ) dr("分布_80分段") = dt.Compute("Count(姓名)", dr("科目") & " >= 80 And " & dr("科目") & " < 90" ) dr("分布_90分段") = dt.Compute("Count(姓名)", dr("科目") & " >= 90 And " & dr("科目") & " < 100" ) dr("分布_满分") = dt.Compute("Count(姓名)", dr("科目") & " >= 100" ) dr("优秀人数") = dt.Compute("Count(姓名)", dr("科目") & " >= " & 80) dr("及格人数") = dt.Compute("Count(姓名)", dr("科目") & " >= 60") dr("差生人数") = dt.Compute("Count(姓名)", dr("科目") & " < 40") dr("最高分") = dt.Compute("Max(" & dr("科目") & ")") dr("最低分") = dt.Compute("Min(" & dr("科目") & ")") dr("总分") = dt.Compute("Sum(" & dr("科目") & ")") dr("平均分") = dt.Compute("Avg(" & dr("科目") & ")") next
|
-- 作者:幸福地微笑
-- 发布时间:2016/8/3 14:00:00
-- 再请教
现在有一个问题,由于成绩的评优是分年级的,如一年级和二年级是90分以上才算优,而其它的年级是80分以上才算优,但这条界线我是想通过一个表来记录,可以通过修改这个表中的值来动态更新结果,要如何来操作呢?
我本来是想增加一个“全局参数设定”的表,并根据[入学年份]列增加动态的数据列
[在校状态] 用于判断已毕业还是在校读几年级
[年级段] 用于判断是低年级段还是高年级段
[高年级优段界定] 设定高年级段的优秀线的值
[高年级良段界定] 设定高年级段的良好线的值
[低年级优段界定] 设定低年级段的优秀线的值
[低年级良段界定] 设定低年级段的良好线的值
不知这样架构是否可行?还是有什么好的方法来实现?
|
-- 作者:大红袍
-- 发布时间:2016/8/3 14:57:00
--
做一个表 分数线
年级 优秀分数 及格分数 差生分数
1 90
2 90
3 80
4 80
然后写代码改一下
Dim nianfen As WinForm.ComboBox = e.Form.Controls("入学年份") Tables("成绩记录").Filter="入学年份 = \'" & nianfen.Text & " \' "
For Each dr As DataRow In DataTables("班级考情分析").Select("") Dim dt As Table = Tables("成绩记录") dr("分布_40以下") = dt.Compute("Count(姓名)", dr("科目") & " < 40") dr("分布_40至60") = dt.Compute("Count(姓名)", dr("科目") & " >= 40 And " & dr("科目") & " < 60" ) dr("分布_60分段") = dt.Compute("Count(姓名)", dr("科目") & " >= 60 And " & dr("科目") & " < 70" ) dr("分布_70分段") = dt.Compute("Count(姓名)", dr("科目") & " >= 70 And " & dr("科目") & " < 80" ) dr("分布_80分段") = dt.Compute("Count(姓名)", dr("科目") & " >= 80 And " & dr("科目") & " < 90" ) dr("分布_90分段") = dt.Compute("Count(姓名)", dr("科目") & " >= 90 And " & dr("科目") & " < 100" ) dr("分布_满分") = dt.Compute("Count(姓名)", dr("科目") & " >= 100" ) Dim filter1 As String = "1=2" Dim filter2 As String = "1=2" For Each cdr As DataRow In DataTables("分数线").DataRows filter1 = filter1 & " or 学年 = " & Date.Today.Year - cdr("年级") & " and " & dr("科目") & " > " & cdr("优秀分数") filter2 = filter2 & " or 学年 = " & Date.Today.Year - cdr("年级") & " and " & dr("科目") & " > " & cdr("及格分数") Next dr("优秀人数") = dt.Compute("Count(姓名)", filter1) dr("及格人数") = dt.Compute("Count(姓名)", filter2) dr("差生人数") = dt.Compute("Count(姓名)", dr("科目") & " < 40") dr("最高分") = dt.Compute("Max(" & dr("科目") & ")") dr("最低分") = dt.Compute("Min(" & dr("科目") & ")") dr("总分") = dt.Compute("Sum(" & dr("科目") & ")") dr("平均分") = dt.Compute("Avg(" & dr("科目") & ")") next
|
-- 作者:幸福地微笑
-- 发布时间:2016/8/4 1:30:00
-- [求助]如何统计在部分科目没有参加考试的情况下总分的统计
此主题相关图片如下:总分统计的问题.jpg

以下是本人在大红袍大神的指导下的代码
Dim nianfen As WinForm.ComboBox = e.Form.Controls("入学年份") Dim banhao As WinForm.ComboBox = e.Form.Controls("班号") Dim xuenian As WinForm.ComboBox = e.Form.Controls("学年") Dim xueqi As WinForm.ComboBox = e.Form.Controls("学期") Dim leixing As WinForm.ComboBox = e.Form.Controls("考试类型") Tables("成绩记录").Filter="入学年份 = \'" & nianfen.Text & " \' And 班号 = \'" & banhao.Text & " \'And 学年 = \'" & xuenian.Text & " \' And 学期 = \'" & xueqi.Text & "\' And 考试类型 = \'" & leixing.Text & "\'" For Each dr As DataRow In DataTables("班级考情分析").Select("") Dim dt As Table = Tables("成绩记录") If dr("科目") = "总分" Then dr("分布_40以下") = dt.Compute("Count(姓名)", dr("科目") & " < 160") dr("分布_40至60") = dt.Compute("Count(姓名)", dr("科目") & " >= 160 And " & dr("科目") & " < 240" ) dr("分布_60分段") = dt.Compute("Count(姓名)", dr("科目") & " >= 240 And " & dr("科目") & " < 280" ) dr("分布_70分段") = dt.Compute("Count(姓名)", dr("科目") & " >= 280 And " & dr("科目") & " < 320" ) dr("分布_80分段") = dt.Compute("Count(姓名)", dr("科目") & " >= 320 And " & dr("科目") & " < 360" ) dr("分布_90分段") = dt.Compute("Count(姓名)", dr("科目") & " >= 360 And " & dr("科目") & " < 400" ) Dim filter1 As String = "1=2" Dim filter2 As String = "1=2" Dim filter3 As String = "1=2" For Each cdr As DataRow In DataTables("分数线").DataRows filter1 = filter1 & " or 学年 = " & Date.Today.Year - cdr("年级") + 1 & " and " & dr("科目") & " > " & cdr("优秀分数")*4 filter2 = filter2 & " or 学年 = " & Date.Today.Year - cdr("年级") + 1 & " and " & dr("科目") & " > " & cdr("及格分数")*4 filter3 = filter3 & " or 学年 = " & Date.Today.Year - cdr("年级") + 1 & " and " & dr("科目") & " < " & cdr("差生分数")*4 Next dr("分布_满分") = dt.Compute("Count(姓名)", dr("科目") & " >= 400" ) dr("优秀人数") = dt.Compute("Count(姓名)", filter1) dr("及格人数") = dt.Compute("Count(姓名)", filter2) dr("差生人数") = dt.Compute("Count(姓名)", filter3) Else dr("分布_40以下") = dt.Compute("Count(姓名)", dr("科目") & " < 40") dr("分布_40至60") = dt.Compute("Count(姓名)", dr("科目") & " >= 40 And " & dr("科目") & " < 60" ) dr("分布_60分段") = dt.Compute("Count(姓名)", dr("科目") & " >= 60 And " & dr("科目") & " < 70" ) dr("分布_70分段") = dt.Compute("Count(姓名)", dr("科目") & " >= 70 And " & dr("科目") & " < 80" ) dr("分布_80分段") = dt.Compute("Count(姓名)", dr("科目") & " >= 80 And " & dr("科目") & " < 90" ) dr("分布_90分段") = dt.Compute("Count(姓名)", dr("科目") & " >= 90 And " & dr("科目") & " < 100" ) Dim filter1 As String = "1=2" Dim filter2 As String = "1=2" Dim filter3 As String = "1=2" For Each cdr As DataRow In DataTables("分数线").DataRows filter1 = filter1 & " or 学年 = " & Date.Today.Year - cdr("年级") + 1 & " and " & dr("科目") & " > " & cdr("优秀分数") filter2 = filter2 & " or 学年 = " & Date.Today.Year - cdr("年级") + 1 & " and " & dr("科目") & " > " & cdr("及格分数") filter3 = filter3 & " or 学年 = " & Date.Today.Year - cdr("年级") + 1 & " and " & dr("科目") & " < " & cdr("差生分数") Next dr("分布_满分") = dt.Compute("Count(姓名)", dr("科目") & " >= 100" ) dr("优秀人数") = dt.Compute("Count(姓名)", filter1) dr("及格人数") = dt.Compute("Count(姓名)", filter2) dr("差生人数") = dt.Compute("Count(姓名)", filter3) End If dr("最高分") = dt.Compute("Max(" & dr("科目") & ")") dr("最低分") = dt.Compute("Min(" & dr("科目") & ")") dr("总分") = dt.Compute("Sum(" & dr("科目") & ")") dr("平均分") = dt.Compute("Avg(" & dr("科目") & ")") Next
|