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


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

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

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


加好友 发短信
等级:超级版主 帖子:110648 积分:563148 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/7/6 20:52:00 [显示全部帖子]

SQLSelect是从后台数据库取值,后台数据库是不存在临时列的。如果要使用临时列数据只有使用Select

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


加好友 发短信
等级:超级版主 帖子:110648 积分:563148 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/7/6 22:41:00 [显示全部帖子]

            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("曾交战对手累计积分") + DataTables("比赛积分").SQLCompute("SUM(积分)","[分组] = '" & Str & "' And [桌号] = " & dr("桌号") & " And [编号] <> '" & dr("编号") & "'and [姓名] <> '" & dr("姓名") & "'")
            End If
                dr.Save
            End If


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


加好友 发短信
等级:超级版主 帖子:110648 积分:563148 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/7/7 10:10:00 [显示全部帖子]


Dim drs As List(Of DataRow) = DataTables("比赛积分").Select("[姓名] = '" & bj & "'", "辅助计算 DESC")

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


加好友 发短信
等级:超级版主 帖子:110648 积分:563148 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/7/7 10:56:00 [显示全部帖子]

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

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


加好友 发短信
等级:超级版主 帖子:110648 积分:563148 威望: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

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


加好友 发短信
等级:超级版主 帖子:110648 积分:563148 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/7/7 14:22:00 [显示全部帖子]

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

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

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


加好友 发短信
等级:超级版主 帖子:110648 积分:563148 威望: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

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


加好友 发短信
等级:超级版主 帖子:110648 积分:563148 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/7/7 16:56:00 [显示全部帖子]

这个意思?如果有2个第一名,第三名名次为2?

Dim drs As List(Of DataRow) = DataTables("比赛积分").Select("[棋赛名称] = '2020年迎春杯'And [第几轮比赛] = '2' And [分组] = '综合组'","辅助计算 DESC")
dim idx as integer = 1
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)("名次") = idx '设置排名
idx += 1
    End If
Next

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


加好友 发短信
等级:超级版主 帖子:110648 积分:563148 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/7/7 17:21:00 [显示全部帖子]

看懂红色代码,至于是使用"辅助计算"还是其他什么xxxx列进行排序那是您自己的事

Dim drs As List(Of DataRow) = DataTables("比赛积分").Select("[棋赛名称] = '2020年迎春杯'And [第几轮比赛] = '2' And [分组] = '综合组'","辅助计算 DESC")
dim idx as integer = 1
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)("名次") = idx '设置排名
idx += 1
    End If
Next


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


加好友 发短信
等级:超级版主 帖子:110648 积分:563148 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/7/7 20:05:00 [显示全部帖子]

        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
                    drs(n)("名次") = drs(n-1)("名次")
                Else
                    drs(n)("名次") = i1  
        i1 + = 1                  
                End If            
            End If
        Next

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