Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

如何按一定比例计算总分、均分、人数等。

冰花雪虹  发表于:2010-09-06 22:40:06  
复制

我们学校的考试的成绩一般都去掉测评人数的10%计算某个班的总分、均分,请问如何在下面的查询条件中输入内容才能实现这样的要求?

 

有两种情况

 

一是不管什么测评比例,所有参加考试的人数全部计算,这个应该没有什么问题吧?

 

二是通过年报人数,比如年报有35人,则去掉10%,即去掉4人,计算这个班31个人的成绩,当然参与计算的分数是从最高分到最低分31人。

 

请问如何实现?

 

 

Top
煮江品茶 发表于:2010-09-07 08:25:03

一二两种情况都用分组查询就可以了。

其中第二种情况,要有抽样的规则,比如去掉最高最低各5%,再比如随机抽样90%,等等。没有规则就没有算法,没有算法就折腾不出来正确的数据。



王静 发表于:2010-09-07 11:16:59

能说详细一点吗?你的10%怎么确定,我刚刚做过类似的问题,如果可以传附件的话,我们看看!



冰花雪虹 发表于:2010-09-07 17:33:21

我是个新手,“煮江品茶”老师说的太笼统了,不太明白,10%是根据“测评人数”表里面的数据确定的。具体见附件,谢谢。

 

 

点击下载此附件

煮江品茶 发表于:2010-09-07 17:43:23

180130班级语文考试46人,去掉10%的话,应该是41人。
现在问题的关键在于,去掉哪5位学生的语文成绩?
是随机的去掉5位学生的成绩?还是去掉3个最高分,2个最低分?还是其他的规则呢?

这个问题与Access无关,只是你们的统计规则制定问题。



冰花雪虹 发表于:2010-09-07 22:25:24
10%去掉的是最低分。

煮江品茶 发表于:2010-09-08 11:45:15
冰花雪虹 发表于:2010-09-08 13:15:01

看那个图,真不错,非常感谢,不过附件好像不对,附件是什么人员表,里面有两个?老师是不是发错了?呵呵。



煮江品茶 发表于:2010-09-08 14:43:57

是发错了。呵呵

现在是对了。

 

 

点击下载此附件

冰花雪虹 发表于:2010-09-08 23:41:22

正在研究中,呵呵。谢谢。



冰花雪虹 发表于:2010-09-09 08:52:15

还想问一下,我原来的数据库里面还有个表是指定每个班的测评基数,为什么没有了?现在好像是根据实际参加考试的人数来确定10%,我的意思是很据指定的测评基数来确定这10%。比如一年级的测评基数是40人,则不管有多少人参加考试,一律都是除掉40人的10%来核算,也就是除掉4个人,应该计算另外36人得成绩,如果有42人参加考试,就相当于除掉6个人。如果有38人参加考试,就相当于除掉2个人。如果有35人参加考试,那么还要加一个0分,凑够36人,呵呵。



煮江品茶 发表于:2010-09-09 11:08:44
你可以加上测评基数的表,然后把代码中的sql1改为这个表名称即可

冰花雪虹 发表于:2010-10-31 17:49:26
请问新建一个测评基数的表,我想能不能根据考试的时间来调取这个基础。比如10月份的测评基数是40人,11月份的测评基数是42人?

冰花雪虹 发表于:2010-10-31 19:06:04

现在是按照现有人数进行抽样的,我现在直接在考评表里面增加了一个字段“测评基数”,但是在代码中没有找到应该把“测评基数”修改到代码的哪个地方呀?

 

Option Compare Database

Function 考评函数(n As Single)
Dim rs1 As New ADODB.Recordset, ssql1 As String, i As Long
Dim rs2 As New ADODB.Recordset, ssql2 As String, j As Long
Dim rs3 As New ADODB.Recordset, ssql3 As String
Dim S As Single
If IsNull(Me.考试时间.Value) = True Then Exit Function
ssql1 = "SELECT 考试班级 FROM 学生成绩数据 GROUP BY 考试时间,考试班级 HAVING 考试时间=#" & Me.考试时间.Value & "#"
rs1.Open ssql1, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
ssql3 = "select * from 考评表 where 考试时间=#" & Me.考试时间.Value & "#"
rs3.Open "考评表", CurrentProject.Connection, adOpenKeyset, adLockOptimistic

For i = 1 To rs3.RecordCount
    rs3.Delete
    rs3.Update
    rs3.MoveNext
Next

For i = 1 To rs1.RecordCount
    ssql2 = "SELECT 考试时间,考试班级,总分 FROM 学生成绩数据 "
    ssql2 = ssql2 & "WHERE 考试时间=#" & Me.考试时间.Value & "# and 考试班级=" & rs1("考试班级").Value
    ssql2 = ssql2 & " ORDER BY 考试时间,考试班级,总分 DESC;"
    rs2.Open ssql2, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
    rs3.AddNew
    rs3("考试时间").Value = Me.考试时间.Value
    rs3("考试班级").Value = rs1("考试班级").Value
    rs3("总分").Value = DSum("总分", "学生成绩数据", "考试时间=#" & Me.考试时间.Value & "# and 考试班级=" & rs1("考试班级").Value)
    rs3("均分").Value = Round(DAvg("总分", "学生成绩数据", "考试时间=#" & Me.考试时间.Value & "# and 考试班级=" & rs1("考试班级").Value), 2)
    rs3.Update
    S = 0
    For j = 1 To Round(rs2.RecordCount * n, 0)
         S = S + Nz(rs2("总分").Value, 0)
         rs2.MoveNext
    Next
    rs3("抽样总分").Value = Round(S, 2)
    rs3("抽样均分").Value = Round(rs3("抽样总分").Value / j, 2)
    rs3.Update
    rs2.Close
    rs1.MoveNext
Next
rs3.MoveFirst
Me.考评子窗体.Form.Requery
rs1.Close
rs3.Close
End Function

Private Sub 考评计算_Click()
Me.考试班级.Value = Null
Me.选项卡控件4.Value = 1
考评函数 Nz(Me.抽样比例.Value, 1)
Call Allfilter
End Sub

Private Sub Allfilter()
Dim str As String
str = "True"
If IsNull(Me.考试时间.Value) = False Then
    str = str & " and 考试时间=#" & Me.考试时间.Value & "#"
End If
If IsNull(Me.考试班级.Value) = False Then
    str = str & " and 考试班级=" & Me.考试班级.Value
End If
Me.考评子窗体.Form.Filter = str
Me.考评子窗体.Form.FilterOn = True
Me.成绩子窗体.Form.Filter = str
Me.成绩子窗体.Form.FilterOn = True
End Sub

Private Sub 考试班级_AfterUpdate()
Call Allfilter
End Sub

Private Sub 考试时间_AfterUpdate()
Call Allfilter
End Sub



冰花雪虹 发表于:2010-10-31 20:49:53
刚刚发现有个问题,如果直接在考评表里增加一个“测评数据”的话,如果重新核算的话,测评数据就被删除了。

冰花雪虹 发表于:2010-10-31 21:12:35

目前是计算的是总分,如何计算各学科的抽样总分和抽样均分呢?



总记录:15篇  页次:1/1 9 1 :