以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]如何进行排序和填写等次列和筛选入围名单?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=64962)

--  作者:hrw68529
--  发布时间:2015/3/6 9:03:00
--  [求助]如何进行排序和填写等次列和筛选入围名单?
1、排名:根据单位类型(即:01城市和02农村)和 专业组名称,进行排名,软件中的代码只是根据专业组进行排名,不会写根据单位类型和专业组名称,进行排名,请给予代码;
2、等次列:等次列的填写计算如下 :最终成绩90分及以上者为“优秀等次”;根据单位类型(即:01城市和02农村)、专业组名称排序后,按照排序,依据“评审称职”窗口中,给出的淘汰率(如10%),计算上述排序的同类人员总人数的淘汰分数线,高于淘汰比例的人员,在“等次”列填写“入围”,低于淘汰比例的人员的“等次”列,填写“末位淘汰”,淘汰人数实行四舍五入;如参加考试的同类人员(根据单位类型和专业组名称划分)较少,淘汰人数不足1人的,要根据各同类人员的淘汰分数线,算出各同类人员平均淘汰线,高于平均淘汰线的人员,在“等次”列填写“平均入围”,低于平均淘汰线的人员,在“等次”列写入:“平均淘汰”;最终成绩60分以下(不含60分)人员,在“等次”列,写入:“直接淘汰”;
3、筛选入围名单:当点击“评审职称”窗口的“筛选入围人员”时,根据等次列内容,将“优秀等次”、“入围”、“平均入围”人员筛选出来。

例子:
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:信阳市职称评审成绩汇总系统2_201503060838.zip


--  作者:hrw68529
--  发布时间:2015/3/6 9:05:00
--  
如截图:
图片点击可在新窗口打开查看此主题相关图片如下:截图00.png
图片点击可在新窗口打开查看

--  作者:Bin
--  发布时间:2015/3/6 9:06:00
--  
额 怎么一直在排,掌握知识就灵活运用啊,不是一有问题就让别人帮你做 http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=64949&skin=0
--  作者:有点甜
--  发布时间:2015/3/6 9:10:00
--  

 楼主你干脆叫别人帮你设置整个软件算了。


--  作者:hrw68529
--  发布时间:2015/3/6 9:21:00
--  
不是刚学习吗?遇到这个问题我昨天搞了一天,搞不出来,只好求救了
--  作者:有点甜
--  发布时间:2015/3/6 9:24:00
--  

1、

For Each lb As String In DataTables("职称评审成绩").GetValues("单位类型")
    Dim zys As List(Of String) = DataTables("职称评审成绩").GetValues("专业组名称", "单位类型 = \'" & lb & "\'")
    For Each bj As String In zys
        Dim drs As List(Of DataRow) = DataTables("职称评审成绩").Select("单位类型 = \'" & lb & "\' and [专业组名称] = \'" & bj & "\'", "最终成绩 DESC")
        For n As Integer = 0 To drs.Count - 1 \'遍历所有行
            If n > 0 AndAlso drs(n)("最终成绩") = drs(n-1)("最终成绩") Then \'如果总分和上一行相同
                drs(n)("排名") = drs(n-1)("排名") \'则排名等于上一行
            Else
                drs(n)("排名") = n + 1 \'设置排名
            End If
        Next
    Next
Next

e.Form.Controls("成绩").Table.Sort="单位类型,专业组名称,排名"

 

2、自己想办法

 

3、最基本的筛选也不会写?


--  作者:hrw68529
--  发布时间:2015/3/6 9:26:00
--  
呵呵,谢谢有点甜,年纪大了,想学点东西,总是掌握不好要领,谢谢
--  作者:有点甜
--  发布时间:2015/3/6 10:01:00
--  

2、红色地方自己改

 

Dim dt As DataTable = DataTables("职称评审成绩")

Dim ttl As Double = e.Form.Controls("NumericComboBox1").Value
For Each lb As String In dt.GetValues("单位类型")
    Dim zys As List(Of String) = dt.GetValues("专业组名称", "单位类型 = \'" & lb & "\'")
    For Each bj As String In zys
        Dim drs As List(Of DataRow) = dt.Select("单位类型 = \'" & lb & "\' and [专业组名称] = \'" & bj & "\'", "最终成绩")
        Dim ttrs As Integer = drs.Count * ttl
        If ttrs < 1 Then \'这种情况不知道什么意思,自己写
           
        Else
            For n As Integer = 0 To drs.Count - 1
                If n < ttrs Then
                    drs(n)("等次") = "末位淘汰"
                Else
                    drs(n)("等次") = "入围"
                End If
            Next
        End If
    Next
Next
dt.ReplaceFor("等次", "优秀等次", "最终成绩 >= 90")
dt.ReplaceFor("等次", "直接淘汰", "最终成绩 < 60")


--  作者:有点甜
--  发布时间:2015/3/6 10:02:00
--  
3、自己写
--  作者:hrw68529
--  发布时间:2015/3/6 15:14:00
--  
有点甜,真不好意思,下列代码,弄了一中午,没搞好,你看一下红字的地方,要表述的是如果  If ttrs < 1 Then,那么就在等次列,填写“手工复审”,怎么改。
代码如下: Dim dt As DataTable = DataTables("职称评审成绩")
Dim ttl As Double = e.Form.Controls("NumericComboBox1").Value
For Each lb As String In dt.GetValues("单位类型")
    Dim zys As List(Of String) = dt.GetValues("专业组名称", "单位类型 = \'" & lb & "\'")
    For Each bj As String In zys
        Dim drs As List(Of DataRow) = dt.Select("单位类型 = \'" & lb & "\' and [专业组名称] = \'" & bj & "\'", "最终成绩")
        Dim ttrs As Integer = drs.Count * ttl
        If ttrs < 1 Then \'这种情况不知道什么意思,自己写
          drs("等次") = "手工复审"
        Else
            For n As Integer = 0 To drs.Count - 1
                If n > ttrs Then
                    drs(n)("等次") = "末位淘汰"
                Else
                    drs(n)("等次") = "入围"
                End If
            Next
        End If
    Next
Next
dt.ReplaceFor("等次", "优秀等次", "最终成绩 >= 90")
dt.ReplaceFor("等次", "直接淘汰", "最终成绩 < 60")


e.Form.Controls("成绩").Table.Sort="单位类型,专业组名称,面试顺序"
[此贴子已经被作者于2015/3/6 15:14:23编辑过]