Foxtable(狐表)用户栏目专家坐堂 → 在获取排名进步幅度时提示如图的错误。


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

主题:在获取排名进步幅度时提示如图的错误。

帅哥哟,离线,有人找我吗?
地瓜
  11楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:382 积分:3007 威望:0 精华:0 注册:2012/8/30 16:09:00
  发帖心情 Post By:2015/5/12 16:13:00 [只看该作者]

嗯,我今晚回去好好琢磨,谢谢你!

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


加好友 发短信
等级:小狐 帖子:382 积分:3007 威望:0 精华:0 注册:2012/8/30 16:09:00
  发帖心情 Post By:2015/5/12 16:15:00 [只看该作者]

如果要获取进幅名次的学生姓名呢?


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/5/12 16:36:00 [只看该作者]

 无语,你的排名升降表没有一点实质的意义,是无法通过代码直接获取得到最大值和最小值的。

 

 


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/5/12 16:52:00 [只看该作者]

 如果是不改变表结构的情况,你的Datacolchanged事件,必须这样写

 

Dim dr As DataRow =e.DataRow
Dim dt_score As DataTable=DataTables("tblscore")
Dim dt_scorepmjf As DataTable = DataTables("tblscorepmsj")
If e.DataCol.name="科目" And e.DataRow.IsNull("科目")=False Then
   
    Dim mdr As DataRow = Nothing
    Dim max As Integer = 0
    For Each tdr As DataRow In dt_scorepmjf.Select("[考试期数] = '" & e.DataRow("考试期数") & "' And [年级] = '" & e.DataRow("年级") & "'And [班别] = '" & e.DataRow("班别") & "' And " & dr("科目") & " like '↑%'")
        Dim s = tdr(dr("科目"))
        s = s.SubString(1,s.IndexOf("(")-1)
        If mdr Is Nothing Then
            mdr = tdr
        Else
            If val(s) > max Then
                max = val(s)
                mdr = tdr
            End If
        End If
    Next
   
    e.DataRow("高幅度")=max
    e.DataRow("高姓名") = mdr("姓名")
    e.DataRow("最高分")=dt_score.Compute("max(" & dr("科目") & ")","[考试期数] = '" & e.DataRow("考试期数") & "' And [年级] = '" & e.DataRow("年级") & "'And [班别] = '" & e.DataRow("班别") & "' and 学号 = '" & mdr("学号") & "'")
    mdr = Nothing
    max = 0
    For Each tdr As DataRow In dt_scorepmjf.Select("[考试期数] = '" & e.DataRow("考试期数") & "' And [年级] = '" & e.DataRow("年级") & "'And [班别] = '" & e.DataRow("班别") & "' And " & dr("科目") & " like '↓%'")
        Dim s = tdr(dr("科目"))
        s = s.SubString(1,s.IndexOf("(")-1)
        If mdr Is Nothing Then
            mdr = tdr
        Else
            If val(s) > max Then
                max = val(s)
                mdr = tdr
            End If
        End If
    Next
   
    e.DataRow("低幅度")=max
   
    e.DataRow("低姓名") = mdr("姓名")
    
    e.DataRow("最低分")=dt_score.Compute("max(" & dr("科目") & ")","[考试期数] = '" & e.DataRow("考试期数") & "' And [年级] = '" & e.DataRow("年级") & "'And [班别] = '" & e.DataRow("班别") & "' and 学号 = '" & mdr("学号") & "'")

End If


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


加好友 发短信
等级:小狐 帖子:382 积分:3007 威望:0 精华:0 注册:2012/8/30 16:09:00
  发帖心情 Post By:2015/5/14 12:53:00 [只看该作者]

但是后面的进步幅度取值的话就不好弄了。

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/5/14 14:16:00 [只看该作者]

以下是引用地瓜在2015/5/14 12:53:00的发言:
但是后面的进步幅度取值的话就不好弄了。

 

你理解之前的代码了吗?不理解,先去恶补一下基本知识。

 

要获取什么值,之前的表一定要有对应的值,如果没有,就重新生成需要的表。


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


加好友 发短信
等级:小狐 帖子:382 积分:3007 威望:0 精华:0 注册:2012/8/30 16:09:00
  发帖心情 Post By:2015/5/15 15:26:00 [只看该作者]

不理解。

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/5/15 15:59:00 [只看该作者]

以下是引用地瓜在2015/5/15 15:26:00的发言:
不理解。

 

1、你要直接对进步幅度进行取值,那么你就必须每一科用一列去存储对应的信息。比如 用数值列存储上升的值,这样就能对此列进行排序取出最高最低或者统计范围了。这个是你用字符列↑21(92/113)所不能取代的。

 

2、要重新生成以下你的排名升降分析表,加入排名列,最好再加入分数列


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


加好友 发短信
等级:小狐 帖子:382 积分:3007 威望:0 精华:0 注册:2012/8/30 16:09:00
  发帖心情 Post By:2015/5/18 14:17:00 [只看该作者]

即要重新改变表的结构了。

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/5/18 15:10:00 [只看该作者]

以下是引用地瓜在2015/5/18 14:17:00的发言:
即要重新改变表的结构了。

 

是的,也就是把 ↑21(92/113) 的信息弄成数值类型,如 21 这样


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