以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]怎么写2个最高分和2个最低分的代码? (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=68603) |
-- 作者:hrw68529 -- 发布时间:2015/5/21 9:42:00 -- [求助]怎么写2个最高分和2个最低分的代码? 公务面试中,所有考场面试结束后,分别对每个考场去掉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 |
-- 作者:大红袍 -- 发布时间: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 -- 发布时间:2015/5/21 9:54:00 -- 在上边的代码如何改,老大,出现对话框,不行啊 |
-- 作者:大红袍 -- 发布时间:2015/5/21 9:56:00 -- 发了这么多贴,现在连代码还没看懂。 |
-- 作者:大红袍 -- 发布时间:2015/5/21 10:01:00 -- If e.DataCol.name="天数" OrElse e.DataCol.name="面试室" Then
|
-- 作者:狐狸爸爸 -- 发布时间:2015/5/21 10:10:00 -- 这样好理解一些,结合了二楼的代码:
If e.DataCol.name="天数" OrElse e.DataCol.name="面试室" Then [此贴子已经被作者于2015/5/21 10:12:51编辑过]
|