Foxtable(狐表)用户栏目专家坐堂 → 隐查显示


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

主题:隐查显示

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


加好友 发短信
等级:八尾狐 帖子:1953 积分:15015 威望:0 精华:0 注册:2016/4/28 9:58:00
隐查显示  发帖心情 Post By:2017/6/15 21:43:00 [只看该作者]

请问老师如何将成绩表中考试名称包含"毕业"二字的行的语文成绩显示为等级(优\良\及格\不及格)

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/6/15 22:04:00 [只看该作者]

 循环每一行dr,写代码

 

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

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

End If

 

 


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


加好友 发短信
等级:八尾狐 帖子:1953 积分:15015 威望:0 精华:0 注册:2016/4/28 9:58:00
  发帖心情 Post By: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中,问题是上面代码如何简化并提高效率,还有好像判断有问题,怎么改?谢谢

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By: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


 回到顶部