Foxtable(狐表)用户栏目专家坐堂 → [求助]怎么写2个最高分和2个最低分的代码?


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

主题:[求助]怎么写2个最高分和2个最低分的代码?

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


加好友 发短信
等级:五尾狐 帖子:1142 积分:8900 威望:0 精华:0 注册:2012/7/10 9:09:00
[求助]怎么写2个最高分和2个最低分的代码?  发帖心情 Post By:2015/5/21 9:42:00 [只看该作者]

公务面试中,所有考场面试结束后,分别对每个考场去掉2个最高分,去掉2个最低分,然后计算出其余考生面试成绩的“面试室平均值”,如何修改代码,请专家指点。谢谢。
     具体算法:(1)先找出每个面试室的2个最高分和2个最低分,(2)算出每个面试室去掉2个最高分和2个最低分后的其他分数的面试室平均值(3)算出所有面试室平均值的平均值,即加权平均值(4)加权平均值除以每个面试室的面试平均值,得出加权系数。

 If e.DataCol.name="天数" OrElse e.DataCol.name="面试室" Then
    If e.DataRow.IsNull("天数")=False AndAlso e.DataRow.IsNull("面试室")=False Then
        e.DataRow("最高分") = DataTables("笔试成绩").Compute("max(总成绩)","天数='" & e.DataRow("天数") & "' and 面试室='" & e.DataRow("面试室") & "'")
       e.DataRow("最低分") = DataTables("笔试成绩").Compute("min(总成绩)","天数='" & e.DataRow("天数") & "' and 面试室='" & e.DataRow("面试室") & "'")
        e.DataRow("总分") = DataTables("笔试成绩").Compute("sum(总成绩)","天数='" & e.DataRow("天数") & "' and 面试室='" & e.DataRow("面试室") & "'")-e.DataRow("最高分")-e.DataRow("最低分")
        Dim maxid As Integer = DataTables("笔试成绩").FInd("天数='" & e.DataRow("天数") & "' and 面试室='" & e.DataRow("面试室") & "'","总成绩 desc")("_IDentify")
        Dim minid As Integer = DataTables("笔试成绩").FInd("天数='" & e.DataRow("天数") & "' and 面试室='" & e.DataRow("面试室") & "'","总成绩")("_IDentify")
        e.DataRow("面试室平均值")= DataTables("笔试成绩").Compute("avg(总成绩)","天数='" & e.DataRow("天数") & "' and 面试室='" & e.DataRow("面试室") & "' and _identify not in ("& maxid & "," & minid & ")")
        
        e.DataRow("计数") = DataTables("笔试成绩").Compute("Count(总成绩)","天数='" & e.DataRow("天数") & "' and 面试室='" & e.DataRow("面试室") & "'")
        e.DataRow("加权平均值") = e.DataTable.Compute("avg(面试室平均值)","天数='" & e.DataRow("天数") & "' and 是否加权='" & e.DataRow("是否加权") & "'" )
        e.DataRow("加权系数") = e.DataRow("加权平均值")/e.DataRow("面试室平均值")
    End If
End If




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


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

Dim drs As List(Of DataRow) = DataTables("笔试成绩").Select("天数='" & e.DataRow("天数") & "' and 面试室='" & e.DataRow("面试室") & "'", "总成绩 desc")
msgbox("最高分" & drs(0)("总成绩"))
msgbox("最高分" & drs(1)("总成绩"))
msgbox("最低分" & drs(drs.Count-1)("总成绩"))
msgbox("最低分" & drs(drs.Count-2)("总成绩"))

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


加好友 发短信
等级:五尾狐 帖子:1142 积分:8900 威望:0 精华:0 注册:2012/7/10 9:09:00
  发帖心情 Post By:2015/5/21 9:54:00 [只看该作者]

在上边的代码如何改,老大,出现对话框,不行啊

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


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

 发了这么多贴,现在连代码还没看懂。


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


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

If e.DataCol.name="天数" OrElse e.DataCol.name="面试室" Then
    If e.DataRow.IsNull("天数")=False AndAlso e.DataRow.IsNull("面试室")=False Then
        e.DataRow("最高分") = DataTables("笔试成绩").Compute("max(总成绩)","天数='" & e.DataRow("天数") & "' and 面试室='" & e.DataRow("面试室") & "'")
        e.DataRow("最低分") = DataTables("笔试成绩").Compute("min(总成绩)","天数='" & e.DataRow("天数") & "' and 面试室='" & e.DataRow("面试室") & "'")
        e.DataRow("总分") = DataTables("笔试成绩").Compute("sum(总成绩)","天数='" & e.DataRow("天数") & "' and 面试室='" & e.DataRow("面试室") & "'")-e.DataRow("最高分")-e.DataRow("最低分")
       
        Dim drs As List(Of DataRow) = DataTables("笔试成绩").Select("天数='" & e.DataRow("天数") & "' and 面试室='" & e.DataRow("面试室") & "'", "总成绩 desc")
        e.DataRow("面试室平均值")= DataTables("笔试成绩").Compute("avg(总成绩)","天数='" & e.DataRow("天数") & "' and 面试室='" & e.DataRow("面试室") & "' and _identify not in ("& drs(0)("_Identify") & "," & drs(1)("_Identify") & ", " & drs(drs.Count-1)("_Identify") & ", " & drs(drs.Count-2)("_Identify") & ")")    
        e.DataRow("计数") = DataTables("笔试成绩").Compute("Count(总成绩)","天数='" & e.DataRow("天数") & "' and 面试室='" & e.DataRow("面试室") & "'")
        e.DataRow("加权平均值") = e.DataTable.Compute("avg(面试室平均值)","天数='" & e.DataRow("天数") & "' and 是否加权='" & e.DataRow("是否加权") & "'" )
        e.DataRow("加权系数") = e.DataRow("加权平均值")/e.DataRow("面试室平均值")
    End If
End If


 


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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2015/5/21 10:10:00 [只看该作者]

这样好理解一些,结合了二楼的代码:

 

If e.DataCol.name="天数" OrElse e.DataCol.name="面试室" Then
    If e.DataRow.IsNull("天数")=False AndAlso e.DataRow.IsNull("面试室")=False Then
        Dim drs As List(Of DataRow) = DataTables("笔试成绩").Select("天数='" & e.DataRow("天数") & "' and 面试室='" & e.DataRow("面试室") & "'", "总成绩 desc")
        e.DataRow("最高分") = DataTables("笔试成绩").Compute("max(总成绩)","天数='" & e.DataRow("天数") & "' and 面试室='" & e.DataRow("面试室") & "'")
        e.DataRow("最低分") = DataTables("笔试成绩").Compute("min(总成绩)","天数='" & e.DataRow("天数") & "' and 面试室='" & e.DataRow("面试室") & "'")
        e.DataRow("总分") = DataTables("笔试成绩").Compute("sum(总成绩)","天数='" & e.DataRow("天数") & "' and 面试室='" & e.DataRow("面试室") & "'")-e.DataRow("最高分")-e.DataRow("最低分")
        Dim maxid As Integer = DataTables("笔试成绩").FInd("天数='" & e.DataRow("天数") & "' and 面试室='" & e.DataRow("面试室") & "'","总成绩 desc")("_IDentify")
        Dim minid As Integer = DataTables("笔试成绩").FInd("天数='" & e.DataRow("天数") & "' and 面试室='" & e.DataRow("面试室") & "'","总成绩")("_IDentify")
        e.DataRow("面试室平均值")= (e.DataRow("总分") - drs(0)("总成绩") - drs(1)("总成绩")- drs(drs.count -1)("总成绩")) - drs(drs.count -2)("总成绩"))/ (drs.count -4)
        e.DataRow("计数") = DataTables("笔试成绩").Compute("Count(总成绩)","天数='" & e.DataRow("天数") & "' and 面试室='" & e.DataRow("面试室") & "'")
        e.DataRow("加权平均值") = e.DataTable.Compute("avg(面试室平均值)","天数='" & e.DataRow("天数") & "' and 是否加权='" & e.DataRow("是否加权") & "'" )
        e.DataRow("加权系数") = e.DataRow("加权平均值")/e.DataRow("面试室平均值")
    End If
End If

[此贴子已经被作者于2015/5/21 10:12:51编辑过]

 回到顶部