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


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

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

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/5/12 15:04:00 [显示全部帖子]

 你得到的根本不是数值啊,而是类似 ↑21(92/113) 的数据

 

msgbox(dt_scorepmjf.Compute("max(" & dr("科目") & ")","[考试期数] = '" & e.DataRow("考试期数") & "' And [年级] = '" & e.DataRow("年级") & "'And [班别] = '" & e.DataRow("班别") & "'"))

 

 是不是你把表名搞错了?


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/5/12 15:05:00 [显示全部帖子]

要么,你写成这样

 

     e.DataRow("高幅度")=dt_scorepmjf.Compute("max(" & dr("科目") & ")","[考试期数] = '" & e.DataRow("考试期数") & "' And [年级] = '" & e.DataRow("年级") & "'And [班别] = '" & e.DataRow("班别") & "'")


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/5/12 15:34:00 [显示全部帖子]

Dim s As String = "↑333321(92/113)"
msgbox(s.SubString(1,s.IndexOf("(")-1))

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/5/12 15:57:00 [显示全部帖子]

不知道你想做什么

 

Dim s As String = dt_scorepmjf.Compute("max(" & dr("科目") & ")","[考试期数] = '" & e.DataRow("考试期数") & "' And [年级] = '" & e.DataRow("年级") & "'And [班别] = '" & e.DataRow("班别") & "'")
msgbox(s.SubString(1,s.IndexOf("(")-1))

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/5/12 16:07:00 [显示全部帖子]

 5楼、6楼、8楼,都是答案啊

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


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

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

 

 


 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | 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


 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | 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的发言:
但是后面的进步幅度取值的话就不好弄了。

 

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

 

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


 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | 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、要重新生成以下你的排名升降分析表,加入排名列,最好再加入分数列


 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | 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 这样


 回到顶部
总数 11 1 2 下一页