Foxtable(狐表)用户栏目专家坐堂 → 如何根据数值来进行等级划分


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

主题:如何根据数值来进行等级划分

帅哥哟,离线,有人找我吗?
不同凡响的声音
  11楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:47 积分:608 威望:0 精华:0 注册:2011/9/12 21:40:00
  发帖心情 Post By:2011/12/16 16:29:00 [只看该作者]

是这样:要将表A中各科成绩,从高到低进行等级划分,其中A等占10% B等占25% C等占40%  D等占20%  E等占5%,划分好等级后能自动填入相应列中,不知道如何只设置一个按键来实现上述要求,请朋友们帮忙看看,谢谢。

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:期考成绩等级表.table

[此贴子已经被作者于2011-12-16 16:29:18编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  12楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/12/16 16:53:00 [只看该作者]

呵呵,一样简单的:

 

Dim vals() As Double = {0.1,0.35,0.75,0.95}
Dim nms() As String = {"音乐","体育","地理","生物","历史","化学","政治","物理","英语","数学","语文","美术"}
Dim cnt As Integer = DataTables("表A").DataRows.count
For Each nm As String In nms
    Dim drs As List (of DataRow) = DataTables("表A").Select("", nm & " Desc")
    Dim dn As String = nm & "等级"
    For i As Integer = 0 To drs.count - 1
        Dim v As Double  = i /cnt
        If v > vals(3) Then
            drs(i)(dn) = "E"
        ElseIf v > vals(2) Then
            drs(i)(dn) = "D"
        ElseIf v > vals(1) Then
            drs(i)(dn) = "C"
        ElseIf v > vals(0) Then
            drs(i)(dn) = "B"
        Else
            drs(i)(dn) = "A"
        End If
    Next
Next


 回到顶部
帅哥哟,离线,有人找我吗?
不同凡响的声音
  13楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:47 积分:608 威望:0 精华:0 注册:2011/9/12 21:40:00
  发帖心情 Post By:2011/12/16 23:13:00 [只看该作者]

厉害呀,给老大看到肯定说花点银子值,下回让老大点头搞个开发版玩玩,呵呵

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


加好友 发短信
等级:幼狐 帖子:99 积分:1155 威望:0 精华:0 注册:2012/9/30 10:20:00
我试了一下,出现新问题了,要是有一科没有考试没有成绩数据,怎么让那一课不分等级呢?  发帖心情 Post By:2015/1/22 20:23:00 [只看该作者]

我试了一下狐爸的代码,又出现新问题了,要是有一科没有考试没有成绩数据,此代码还是会分等级啊!!!比如音乐没有考试,那怎么让音乐这一科不分等级呢?
附上狐爸的代码:

Dim vals() As Double = {0.1,0.35,0.75,0.95}
Dim nms() As String = {"音乐","体育","地理","生物","历史","化学","政治","物理","英语","数学","语文","美术"}

Dim cnt As Integer = DataTables("A").DataRows.count

For Each nm As String In nms
    Dim drs As List (of DataRow) = DataTables("A").Select("", nm & " Desc")

    Dim dn As String = nm & "等级"

    For i As Integer = 0 To drs.count - 1
        Dim v As Double  = i /cnt
        If v > vals(3) Then
            drs(i)(dn) = "E"
        ElseIf v > vals(2) Then
            drs(i)(dn) = "D"
        ElseIf v > vals(1) Then
            drs(i)(dn) = "C"
        ElseIf v > vals(0) Then
            drs(i)(dn) = "B"
        Else
            drs(i)(dn) = "A"
        End If
    Next
Next

[此贴子已经被作者于2015-1-22 20:23:33编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2015/1/22 20:40:00 [只看该作者]

Dim vals() As Double = {0.1,0.35,0.75,0.95}
Dim nms() As String = {"音乐","体育","地理","生物","历史","化学","政治","物理","英语","数学","语文","美术"}
Dim cnt As Integer = DataTables("表A").DataRows.count
For Each nm As String In nms
    Dim drs As List (of DataRow) = DataTables("表A").Select("", nm & " Desc")
    Dim dn As String = nm & "等级"
    For i As Integer = 0 To drs.count - 1
        If drs(i).IsNull(dn) = True Then
            drs(i)(dn) = Nothing
        Else
            Dim v As Double  = i /cnt
            If v > vals(3) Then
                drs(i)(dn) = "E"
            ElseIf v > vals(2) Then
                drs(i)(dn) = "D"
            ElseIf v > vals(1) Then
                drs(i)(dn) = "C"
            ElseIf v > vals(0) Then
                drs(i)(dn) = "B"
            Else
                drs(i)(dn) = "A"
            End If
        End If
    Next
Next

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


加好友 发短信
等级:幼狐 帖子:99 积分:1155 威望:0 精华:0 注册:2012/9/30 10:20:00
  发帖心情 Post By:2015/1/23 9:30:00 [只看该作者]

点击没有反应了,现在什么等级也没有了,比如化学这一科没有考试,所以没有成绩,只有化学这一个科目的等级就不生成,其他科目的等级还是要照常生成的,呵呵
代码是:

Dim vals() As Double = {0.1,0.35,0.75,0.95}
Dim nms() As String = {"语文","数学","英语","物理","化学","政治","历史","地理","生物","体育"}
Dim cnt As Integer = DataTables("学科等级").DataRows.count
For Each nm As String In nms
    Dim drs As List (of DataRow) = DataTables("学科等级").Select("", nm & " Desc")
    Dim dn As String = nm & "等级"
    For i As Integer = 0 To drs.count - 1
        If drs(i).IsNull(dn) = True Then
            drs(i)(dn) = Nothing
        Else
            Dim v As Double  = i /cnt
            If v > vals(3) Then
                drs(i)(dn) = "E"
            ElseIf v > vals(2) Then
                drs(i)(dn) = "D"
            ElseIf v > vals(1) Then
                drs(i)(dn) = "C"
            ElseIf v > vals(0) Then
                drs(i)(dn) = "B"
            Else
                drs(i)(dn) = "A"
            End If
        End If
    Next
Next

不知道是啥问题呢???


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

[此贴子已经被作者于2015-1-23 9:32:45编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2015/1/23 9:44:00 [只看该作者]

 看了下,代码没问题。不行就做个例子发上来。

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2015/1/23 9:46:00 [只看该作者]

 哦,写错列名了

 

Dim vals() As Double = {0.1,0.35,0.75,0.95}
Dim nms() As String = {"音乐","体育","地理","生物","历史","化学","政治","物理","英语","数学","语文","美术"}
Dim cnt As Integer = DataTables("表A").DataRows.count
For Each nm As String In nms
    Dim drs As List (of DataRow) = DataTables("表A").Select("", nm & " Desc")
    Dim dn As String = nm & "等级"
    For i As Integer = 0 To drs.count - 1
        If drs(i).IsNull(nm) = True Then
            drs(i)(dn) = Nothing
        Else
            Dim v As Double  = i /cnt
            If v > vals(3) Then
                drs(i)(dn) = "E"
            ElseIf v > vals(2) Then
                drs(i)(dn) = "D"
            ElseIf v > vals(1) Then
                drs(i)(dn) = "C"
            ElseIf v > vals(0) Then
                drs(i)(dn) = "B"
            Else
                drs(i)(dn) = "A"
            End If
        End If
    Next
Next


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


加好友 发短信
等级:幼狐 帖子:99 积分:1155 威望:0 精华:0 注册:2012/9/30 10:20:00
  发帖心情 Post By:2015/1/23 9:51:00 [只看该作者]

完美解决,灰常感谢!
顺便说一下使用FOXTABLE的感觉,的确很爽,操作简单,界面简洁,我是一个新手都能慢慢学懂一二,尤其感谢狐爸和甜版主,问题解决反馈的速度比顺丰还快,要做系统的卖家强烈推荐使用!!

 回到顶部
总数 19 上一页 1 2