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


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

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

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


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

不行,有相同分数的,相同分同名次。

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


加好友 发短信
等级:八尾狐 帖子:1881 积分:10368 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2020/7/7 16:45: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")
        Dim i1 As Integer = 1
        For n As Integer = 0 To drs.Count - 1 '遍历所有行 
            If n > 0 AndAlso drs(i1)("本轮止累计积分") = drs(i1-1)("本轮止累计积分") Then
                If drs(i1)("本次止曾交战对手累计积分") = drs(i1-1)("本次止曾交战对手累计积分") Then
                    n + = n
                Else
                    n + = n + 1
                End If
            Else
                n + = n + 1
            End If
            drs(i1)("名次") = n
        i1 + = 1
        Next
        DataTables("比赛积分").Save()
        DataTables("比赛积分").load

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


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

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


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

不,不能用辅助计算比较,本轮止累计积分为序,它分数相同,再比较本次止曾交战对手累计积分,那个大那个名次靠前,如果都相等,则如你说的第3名升为并列第2名。

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


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


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


加好友 发短信
等级:八尾狐 帖子:1881 积分:10368 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2020/7/7 18:23: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")
        Dim i1 As Integer = 1
        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                    
                End If            
            End If
        i1 + = 1
        Next
        DataTables("比赛积分").Save()
        DataTables("比赛积分").load

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


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

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


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

i1 + = 1  在   End If 前还是后都没生成任何名次,你回之前我都试过了。

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


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


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


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

标识没标识的位置我都试过了,生成不完整的名次(有的有显示,有的没显示,显示名次也不对。)
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:象棋排赛(202070801).foxdb

密码:888888
        Dim drs As List(of DataRow) = DataTables("比赛积分").SQLSelect("[棋赛名称] = '" & di1 & "'And [第几轮比赛] = '" & di2 & "' And [分组] = '" & Str & "'","","本轮止累计积分 Desc,本次止曾交战对手累计积分 Desc")
        Dim i1 As Integer = 1
        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            
            'i1 + = 1             
            End If
        'DataTables("比赛积分").SQLUpdate(drs)        
        Next
        DataTables("比赛积分").SQLUpdate(drs)
        DataTables("比赛积分").load


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