Foxtable(狐表)用户栏目专家坐堂 → 通过临时列积分排名次


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

主题:通过临时列积分排名次

帅哥,在线噢!
有点蓝
  11楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:105473 积分:536350 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/7/7 10:56:00 [只看该作者]

辅助计算列值肯定都一样,才会都是1

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  12楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1863 积分:10262 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2020/7/7 12:04:00 [只看该作者]


图片点击可在新窗口打开查看此主题相关图片如下:1233.png
图片点击可在新窗口打开查看
辅助计算列计算出来的数据有不一样的。

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  13楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1863 积分:10262 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2020/7/7 12:05:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:象棋排赛(2020706).foxdb

密码:888888
代码在综合组保存按钮。
[此贴子已经被作者于2020/7/7 12:55:41编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  14楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:105473 积分:536350 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/7/7 13:41:00 [只看该作者]

Dim drs As List(Of DataRow) = DataTables("比赛积分").Select("[棋赛名称] = '2020年迎春杯'And [第几轮比赛] = '2' And [分组] = '综合组'","辅助计算 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

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  15楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1863 积分:10262 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2020/7/7 14:16:00 [只看该作者]

有2个疑问:
1、select不是只对已加载数据有效吗?我的设计是分页加载,那么没加载进来的数据是否漏掉?
2、安你的代码执行结果象我8楼截图效果,没安顺序显示名次,现在1之后2、3、4等不见了,然后跳跃到不连续数据,我的意图是安1、2、3排名,相同分数重复名次,名次代码是否要象前面的排序一样进行两次排名。
[此贴子已经被作者于2020/7/7 14:16:45编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  16楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:105473 积分:536350 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/7/7 14:22:00 [只看该作者]

1、我只是提供一个可能的逻辑,主要是理解代码表示的逻辑,不代表我的代码就是正确的不可更改的,细节的东西请自行调整,是使用select还是SqlSelect,根据需要使用

2、你如果是抄帮助的代码的,请先仔细看帮助理解一下代码,不要以为抄完就一了百了。帮助的用法就是不连续的,比如有2个分数一样,2个第一名,并列第一,那么第二名就不存在,直接从第三名开始、如果要把2个第一名也要分个名次,请提供排名的依据,否则会引起2个第一名打架就不好了

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  17楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1863 积分:10262 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2020/7/7 14:57:00 [只看该作者]

     1、我第一反应就是把select改为SQLselect,但忘了执行后台数据要每次循环一次保存一次,所以我得出了全部名次为1,这是对后台数据的未理解。
     2、这种排名方法不适用于象棋排名,且作学习吧,学习帮助里的排名是怎样的效果,不动手做做又怎知帮助里的排名跳跃式,说实在的跳跃式排名不适用于学生成绩排名,没这样断号排名的,重分重名次(允许),然后继续下一个连续名次,名次不断号。

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  18楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1863 积分:10262 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2020/7/7 15:01:00 [只看该作者]

我这个项目没什么实用价值,只作我学习练手。

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  19楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1863 积分:10262 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2020/7/7 16:06:00 [只看该作者]

加入两列把本轮比赛积分加进去再排名,但没显示名次。
        Dim qsmc As WinForm.ComboBox = e.Form.Controls("棋赛名称")
        Dim di1 As String = qsmc.Value
        Dim m As WinForm.TextBox = e.Form.Controls("第几轮")
        Dim di2 As String = m.Value
        Dim bsrq As WinForm.DateTimePicker = e.Form.Controls("rq")
        Dim di3 As Date = bsrq.Value
        Dim fz As WinForm.ComboBox = e.Form.Controls("fenzhu")
        Dim Str As String = fz.Value
        For Each nr As Row In Tables("综合组").Rows
            Dim dr As DataRow = DataTables("比赛积分").SQLfind("[棋赛名称] = '" & di1 & "' And [第几轮比赛] = '" & di2 & "' And [分组] = '" & Str & "' And [编号] = '" & nr("红方_编号") & "'")
            If dr IsNot Nothing Then
                If di3 <> Nothing Then
                    dr("日期") = di3
                End If
                dr("桌号") = nr("桌号")
                dr("红黑方") = "红方"
                dr("积分") = nr("当前局成绩_红方")
                If di2 >= 2
                    dr("本轮止累计积分") = dr("上轮止累计积分") + dr("积分")
                    dr("本次止曾交战对手累计积分") =  dr("曾交战对手累计积分") + DataTables("比赛积分").SQLCompute("SUM(积分)","[分组] = '" & Str & "' And [桌号] = " & dr("桌号") & " And [编号] <> '" & dr("编号") & "'and [姓名] <> '" & dr("姓名") & "'")
                End If
                dr.Save
            End If
            dr = DataTables("比赛积分").SQLfind("[棋赛名称] = '" & di1 & "' And [第几轮比赛] = '" & di2 & "' And [分组] = '" & Str & "' And [编号]='" & nr("黑方_编号") & "'")
            If dr IsNot Nothing Then
                If di3 <> Nothing Then
                    dr("日期") = di3
                End If
                dr("桌号") = nr("桌号")
                dr("红黑方") = "黑方"
                dr("积分") = nr("当前局成绩_黑方")
                If di2 >= 2
                    dr("本轮止累计积分") = dr("上轮止累计积分") + dr("积分")
                    dr("本次止曾交战对手累计积分") =  dr("曾交战对手累计积分") + DataTables("比赛积分").SQLCompute("SUM(积分)","[分组] = '" & Str & "' And [桌号] = " & dr("桌号") & " And [编号] <> '" & dr("编号") & "'and [姓名] <> '" & dr("姓名") & "'")
                End If
                dr.Save
            End If
        Next
        DataTables("比赛积分").load
        Dim drs As List(of DataRow) = DataTables("比赛积分").SQLSelect("[棋赛名称] = '" & di1 & "'And [第几轮比赛] = '" & di2 & "' And [分组] = '" & Str & "'","","本轮止累计积分 Desc,本次止曾交战对手累计积分 Desc")
        For n As Integer = 0 To drs.Count - 1 '遍历所有行
            If n > 0 AndAlso drs(n)("本轮止累计积分") = drs(n-1)("本轮止累计积分") Then
                If drs(n)("本次止曾交战对手累计积分") = drs(n-1)("本次止曾交战对手累计积分") Then
                    n + = n
                Else
                    n + = n + 1
                End If
            Else
                n + = n + 1
            End If
            drs(n)("名次") = n
        n + = n + 1
        Next
        DataTables("比赛积分").Save()
        DataTables("比赛积分").load


 回到顶部
帅哥,在线噢!
有点蓝
  20楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:105473 积分:536350 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/7/7 16:14:00 [只看该作者]

如果不断号,直接按顺序赋值即可

for i as integer = 0 to drs.count - 1
drs(i)("名次") = i+1
next

 回到顶部
总数 31 上一页 1 2 3 4 下一页