以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 排名代码错误提醒,重置列为什么没有刷新 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=151166) |
-- 作者:天宇科技 -- 发布时间: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编辑过]
|
-- 作者:有点蓝 -- 发布时间:2020/6/16 22:37:00 -- Dim drs As List(Of DataRow) = DataTables("成绩册").Select("[报考学科] = \'" & bj & "\'", "总成绩 DESC") 条件里的字符串要使用单引号引起来
|
-- 作者:天宇科技 -- 发布时间:2020/6/16 22:39:00 -- 我复制的代码呢? |
-- 作者:天宇科技 -- 发布时间:2020/6/16 22:43:00 -- 行了。谢谢蓝版 |