以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  隐查显示  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=102242)

--  作者:刘林
--  发布时间:2017/6/15 21:43:00
--  隐查显示
请问老师如何将成绩表中考试名称包含"毕业"二字的行的语文成绩显示为等级(优\\良\\及格\\不及格)
--  作者:有点色
--  发布时间:2017/6/15 22:04:00
--  

 循环每一行dr,写代码

 

If dr("考试名称") like "*毕业*" Then

    dr("语文成绩") = "优" \'条件自己判断

End If

 

 


--  作者:刘林
--  发布时间:2017/6/15 22:37:00
--  
Dim dr As DataRow = DataTables("考试名称").find("考试名称 = \'" & e.Row("考试名称") & "\' and 学段 = \'"& e.row("学段") & "\' And 显示为等级 = \'True\'")
If dr IsNot Nothing
    Select Case e.Col.name
        Case "语文_A","数学_A","语文_语总","数学_数总"
            If E.Row("语文_A")>=85
                e.text ="优"
            End If
            If E.Row("数学_A")>=85
                e.text ="优"
            End If
            If E.Row("语文_语总")>=85
                e.text ="优"
            End If
            If E.Row("数学_A")>=85
                e.text ="优"
            End If
            
            If E.Row("语文_A")>=75 And  E.Row("语文_A")<=84
                e.text ="良"
            End If
            If E.Row("数学_A")>=75 And e.Row("数学_A") <=84
                e.text ="良"
            End If
            If E.Row("数学_数总")>=75 And e.Row("数学_数总") <=84
                e.text ="良"
            End If
            If E.Row("语文_语总")>=75 And e.Row("语文_语总") <=84
                e.text ="良"
            End If
            
            
            If E.Row("语文_A")>=60 And  E.Row("语文_A")<=74
                e.text ="合格"
            End If
            If E.Row("数学_A")>=60 And  E.Row("数学_A")<=74
                e.text ="合格"
            End If
            If E.Row("语文_语总")>=60 And  E.Row("语文_语总")<=74
                e.text ="合格"
            End If
            If E.Row("数学_数总")>=60 And  E.Row("数学_数总")<=74
                e.text ="合格"
            End If
            
            If E.Row("语文_A")<=59
                e.text ="不合格"
            End If
            If E.Row("数学_A")<=59
                e.text ="不合格"
            End If
            If E.Row("语文_语总")<=59
                e.text ="不合格"
            End If
            If E.Row("数学_数总")<=59
                e.text ="不合格"
            End If
            
            
        Case "总分"
            e.text ="***"
            
    End select

End If

上面代码写在drawcell中,问题是上面代码如何简化并提高效率,还有好像判断有问题,怎么改?谢谢

--  作者:有点色
--  发布时间:2017/6/15 23:48:00
--  

 1、如果想提高效率,你要加一列【显示为等级】,然后直接在本表对比。不然每次find的话,很慢的。

 

 2、简化的问题

 

Select Case e.Col.name
    Case "语文_A","数学_A","语文_语总","数学_数总"
       
        Dim lvl() As String = { "优", "良", "及格", "不合格"}
        Dim score() As Integer = {80, 70, 60, 0}
        For i As Integer = 0 To score.length-1
            If e.Row(e.Col.name) >= score(i) Then
                e.text = lvl(i)
                Exit For
            End If
        Next
end select