Foxtable(狐表)用户栏目专家坐堂 → 排名代码错误提醒,重置列为什么没有刷新


  共有2278人关注过本帖平板打印复制链接

主题:排名代码错误提醒,重置列为什么没有刷新

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


加好友 发短信
等级:一尾狐 帖子:472 积分:4025 威望:0 精华:0 注册:2018/5/13 15:18:00
排名代码错误提醒,重置列为什么没有刷新  发帖心情 Post By:2020/6/16 22:34:00 [只看该作者]

排名代码,提示:找不到“初中地理”,为什么会有这个提醒呢,报考学科 列中有初中地理。

Tables("成绩册").StopRedraw
Dim bjs As List(Of String) = DataTables("成绩册").GetValues("报考学科")
For Each bj As String In bjs
    '获得该班级的全部行,按总分降序排序
    Dim drs As List(Of DataRow) = DataTables("成绩册").Select("[报考学科] = " & bj, "总成绩 DESC")
    For n As Integer = 0 To drs.Count - 1 '遍历所有行
        If n > 0 AndAlso drs(n)("总成绩") = drs(n-1)("总成绩") Then '如果总分和上一行相同
            drs(n)("总排名") = drs(n-1)("总排名") '则排名等于上一行
        Else
            drs(n)("总排名") = n + 1 '设置排名
        End If
    Next
Next
Tables("成绩册").Sort = "总成绩 DESC"
Tables("成绩册").ResumeRedraw


————————————————————————————————————————————————————————————————
用这个代码,可以实现 我想要的功能,但有一个问题,如果我修改笔试排名后,要先删除是否面试列的内容,他不会自动刷新,可能是错的。

If e.DataCol.Name = "报考学科" Or e.DataCol.Name = "笔试排名" Then '如果内容发生变动的是品名列
    If e.NewValue Is Nothing Then '如果新值是空白,也就是品名列的内容为空
        e.DataRow("是否面试") = Nothing '那么清空此行单价列的内容
    Else
        Dim dr As DataRow
        '否则在产品表查找同名的产品行,将找到的行赋值给变量dr
        dr = DataTables("名额").Find("[报考学科] = '" & e.NewValue & "'")
        If dr IsNot Nothing Then '如果找到了同名的产品行,也就是dr不是Nothing
            If e.DataRow("笔试排名") <= dr("面试名额") Then
                e.DataRow("是否面试") ="面试"
            End If
        End If
    End If
End If

[此贴子已经被作者于2020/6/16 22:38:57编辑过]

 回到顶部