以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]空值排名问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=118852)

--  作者:sunion
--  发布时间:2018/5/12 10:30:00
--  [求助]空值排名问题
各位老师,有个疑问,比如成绩表中物理没有考试,即没有分数,下列代码生成排名时,还是有排名(全部都是1)
如果物理、化学没有考试,能不能不生成排名(即排名列为空)呢?


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


源代码如下:

Tables("成绩表").StopRedraw
Dim bjs As List(Of String) = DataTables("成绩表").GetValues("年级","[年级] Is Not NULL")
Dim Count As Integer
Dim ColNames() As String = {"语文","数学","英语","化学","物理","总分"} 
Dim TotalName As String 
For Each ColName As String In ColNames \'
    For i As Integer = 0 To bjs.Count -1 
        Dim drs As List(Of DataRow) = DataTables("成绩表").Select("[年级] = " & bjs(i), ColName & " DESC")
        Count = 0
        TotalName = ColName & "排名"
        For n As Integer = 0 To drs.Count - 1
            Count = Count + 1
            If n > 0 AndAlso drs(n)(ColName ) = drs(n-1)(ColName) Then
                drs(n)(TotalName ) = drs(n-1)(TotalName ) 
            Else
                drs(n)(TotalName ) = Count
            End If
        Next
    Next 
Next
Tables("成绩表").Sort = "总分 DESC"
Tables("成绩表").ResumeRedraw

--  作者:有点蓝
--  发布时间:2018/5/12 11:01:00
--  
只取有值的进行排名
Dim drs As List(Of DataRow) = DataTables("成绩表").Select("[年级] = " & bjs(i) & " and " & ColName & " is not null", ColName & " DESC")