Foxtable(狐表)用户栏目专家坐堂 → [求助]如何让统计表根据筛选出来的数据实时更新统计结果


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

主题:[求助]如何让统计表根据筛选出来的数据实时更新统计结果

帅哥哟,离线,有人找我吗?
幸福地微笑
  1楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:71 积分:526 威望:0 精华:0 注册:2016/7/20 2:33:00
[求助]如何让统计表根据筛选出来的数据实时更新统计结果  发帖心情 Post By:2016/7/31 21:30:00 [只看该作者]


图片点击可在新窗口打开查看此主题相关图片如下:班级考情查询.jpg
图片点击可在新窗口打开查看

 

如何让上方的统计表中的数据能根据筛选条件筛选出来的数据实时地更新统计结果?或者使用按钮进行刷新,应如何编写代码?

 

[此贴子已经被作者于2016/7/31 21:31:50编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
幸福地微笑
  2楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:71 积分:526 威望:0 精华:0 注册:2016/7/20 2:33:00
  发帖心情 Post By:2016/8/1 0:43:00 [只看该作者]

各位大神在哪?

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


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


 回到顶部
帅哥哟,离线,有人找我吗?
幸福地微笑
  4楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:71 积分:526 威望:0 精华:0 注册:2016/7/20 2:33:00
回复:(大红袍)参考 http://www.foxtable....  发帖心情 Post By:2016/8/2 1:06:00 [只看该作者]

仍是不能动态更新,筛选出数据后,统计的结果仍是没有筛选前的结果!没变!求解!

 


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

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


加好友 发短信
等级:管理员 帖子:47448 积分:251060 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By: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")

 回到顶部
帅哥哟,离线,有人找我吗?
幸福地微笑
  6楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:71 积分:526 威望:0 精华:0 注册:2016/7/20 2:33:00
  发帖心情 Post By:2016/8/3 0:29:00 [只看该作者]

本人过于愚钝,还是搞不明白,还请指导!

 

我现在的作品中每定义一个条件,就立即更新筛选结果,如何让上面的统计结果也跟着筛选结果实时更新?

 

期待狐爸你的指导!

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:成绩管理.foxdb

 


 


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By: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

 回到顶部
帅哥哟,离线,有人找我吗?
幸福地微笑
  8楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:71 积分:526 威望:0 精华:0 注册:2016/7/20 2:33:00
再请教  发帖心情 Post By:2016/8/3 14:00:00 [只看该作者]

现在有一个问题,由于成绩的评优是分年级的,如一年级和二年级是90分以上才算优,而其它的年级是80分以上才算优,但这条界线我是想通过一个表来记录,可以通过修改这个表中的值来动态更新结果,要如何来操作呢?

 

我本来是想增加一个“全局参数设定”的表,并根据[入学年份]列增加动态的数据列

[在校状态]   用于判断已毕业还是在校读几年级

[年级段]      用于判断是低年级段还是高年级段

[高年级优段界定]   设定高年级段的优秀线的值

[高年级良段界定]   设定高年级段的良好线的值

[低年级优段界定]   设定低年级段的优秀线的值

[低年级良段界定]   设定低年级段的良好线的值

 

不知这样架构是否可行?还是有什么好的方法来实现?


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By: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


 回到顶部
帅哥哟,离线,有人找我吗?
幸福地微笑
  10楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:71 积分:526 威望:0 精华:0 注册:2016/7/20 2:33:00
[求助]如何统计在部分科目没有参加考试的情况下总分的统计  发帖心情 Post By: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


 回到顶部
总数 30 1 2 3 下一页