Foxtable(狐表)用户栏目专家坐堂 → 排序问题


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

主题:排序问题

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


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

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

密码:888888
一开始排序1不对,上轮止累计积分不是最高,我猜是生成排序的起始值有问题,于是把dr("排序") = math.Ceiling((i2) / 2)改为:dr("排序") = ((i2)+1) \ 2,其实这两公式结果一样的,用哪个都没问题,现在综合组第三轮生成的排序有问题,并没有安上轮止累计积分排序,上轮止累计积分2分的跑到了排序1,它应在排序3,上轮止累计积分3分的跑到了排序3,它应在排序2,我怎么调都调不对,我要比赛积分表最后安
Tables("比赛积分").Sort = "日期 DESC,棋赛名称,分组,轮赛次数值转换 DESC"显示,不加日期 DESC,棋赛名称,分组,排序就不是我要的效果,亦影响取值。
[此贴子已经被作者于2020/6/27 17:19:55编辑过]

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


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

Tables("比赛积分").Sort = "日期 DESC,棋赛名称,分组,轮赛次数值转换 DESC,上轮止累计积分 desc"

Dim drs2 As List(of DataRow) = DataTables("比赛积分").SQLSelect("[棋赛名称] = '" & di1 & "' And [第几轮比赛] = '" & a & "' And [分组] = '" & Str & "'","","日期 Desc,分组,上轮止累计积分 desc,积分 Desc")

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


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

For i As Integer = Tables("比赛积分").TopPosition To Tables("比赛积分").BottomPosition
    Tables("比赛积分").Rows(i).load()
Next
删除行后自动重新加载的代码写在哪?写在删除行后执行,报错!

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


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

全部删除完再加载.

删除的代码
dataTables("比赛积分").load()

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


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

  我加了2楼代码报错,a代表上一轮轮次,第2轮的上轮止累计积分就是第一轮的积分,第一轮没有累计积分,因此不用写在第一轮后,写在第2轮后也同样报错,我试很多次了,不行!重新上传了项目,原来的项目我下载后试报错。

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


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

这个"上轮止累计积分"是新增行后现加的,做排序没有意义
dr("上轮止累计积分") = drs4(ic)("上轮止累计积分") + drs4(ic)("积分")

方法1、新增完,再按照"上轮止累计积分"排序获取新增的行赋值“排序”列
2、增加一个“本轮总积分”列,填入积分后直接累加"上轮止累计积分",然后按照“本轮总积分”进行排序

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


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

我没排序前显示的数据不是我要的,取数也很乱,新增的数据不用排序,生成后排序。

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


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

  本轮是按"日期 DESC,棋赛名称,分组,轮赛次数值转换 DESC,上轮止累计积分 DESC、曾交战对手累计积分"排序的。
[此贴子已经被作者于2020/6/28 20:01:01编辑过]

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


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

那就到生成对阵表的时候再按照“上轮止累计积分”排序取值。在此之前新增的数据不用排序

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


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

 Else If cnt = 0 Then
            Dim drs4 As List(of DataRow) = DataTables("比赛积分").SQLSelect("[棋赛名称] = '" & di1 & "' And [第几轮比赛] = '" & a & "' And [分组] = '" & Str & "'","","日期 Desc,分组,上轮止累计积分 Desc,曾交战对手累计积分")
            For ic As Integer = 0 To drs4.Count - 1
                dr = DataTables("比赛积分").AddNew
                Dim dts2 As DataRow = DataTables("基本信息").SQLFind("[棋赛名称] = '" & di1 & "'And [身份] = '参赛人' And [缺赛轮号] like '%" & di2 & "%' and [编号] = '" & drs4(ic)("编号") & "'")
                If dts2 IsNot Nothing  Then
                    dr("排序") = 0
                Else
                    dr("排序") = ((ii2) + 1) \ 2
                    ii2 + = 1
                End If
                dr("棋赛名称") = di1
                dr("第几轮比赛") = di2
                dr("日期") = di3
                dr("编号") = drs4(ic)("编号")
                dr("姓名") = drs4(ic)("姓名")
                dr("轮赛次数值转换") = Val(di2)
                dr("分组") = Str
                dr("上轮止累计积分") = drs4(ic)("上轮止累计积分") + drs4(ic)("积分")
                dr("曾交战对手累计积分") = drs4(ic)("曾交战对手累计积分") + DataTables("比赛积分").SQLCompute("SUM(积分)","[分组] = '" & Str & "' And [排序] = " & drs4(ic)("排序") & "And [编号] <> '" & drs4(ic)("编号") & "'and [姓名] <> '" & drs4(ic)("姓名") & "'")
                i2 + = 1
            Next
'Dim drs5 As List(of DataRow) = DataTables("比赛积分").SQLSelect("[棋赛名称] = '" & di1 & "'And [第几轮比赛] = '" & di2 & "' And [分组] = '" & Str & "' And [排序] <> 0","","日期 Desc,分组,上轮止累计积分 Desc,曾交战对手累计积分")

            DataTables("比赛积分").Load
            DataTables("比赛积分").Save()
            DataTables("综合组").DataRows.Clear
            Dim drs5 As List(of DataRow) = DataTables("比赛积分").SQLSelect("[棋赛名称] = '" & di1 & "'And [第几轮比赛] = '" & di2 & "' And [分组] = '" & Str & "' And [排序] <> 0","","日期 Desc,分组,排序,上轮止累计积分 Desc,曾交战对手累计积分")
            For id As Integer = 0 To drs5.count - 1 Step 2
                Dim c As Integer = rand.Next(0,2)
                Dim c1 As Integer = IIF(c = 0,1,0)
                c = id+c
                c1 = id+c1
                Dim nr As DataRow = DataTables("综合组").AddNew
                nr("桌号") = drs5(c)("排序")
                If c <= drs5.Count - 1
                    nr("红方_编号") = drs5(c)("编号")
                    nr("红方_姓名") = drs5(c)("姓名")
                    nr("红方_上轮止累计积分") = drs5(c)("上轮止累计积分")
                    nr("红方_曾交战对手累计积分") = drs5(c)("曾交战对手累计积分")
                End If
                If c1 <= drs5.Count - 1
                    nr("黑方_编号") = drs5(c1)("编号")
                    nr("黑方_姓名") = drs5(c1)("姓名")
                    nr("黑方_上轮止累计积分") = drs5(c1)("上轮止累计积分")
                    nr("黑方_曾交战对手累计积分") = drs5(c1)("曾交战对手累计积分")
                End If
            Next
            DataTables("比赛积分").SQLUpdate(drs5)
            drs5 = DataTables("比赛积分").SQLSelect("[棋赛名称] = '" & di1 & "'And [第几轮比赛] = '" & di2 & "' And [分组] = '" & Str & "' And [排序] = 0","","日期 Desc,分组,排序,上轮止累计积分 Desc,曾交战对手累计积分")
            For id As Integer = 0 To drs5.count - 1 Step 2
                Dim c As Integer = rand.Next(0,2)
                Dim c1 As Integer = IIF(c = 0,1,0)
                c = id+c
                c1 = id+c1
                Dim nr As DataRow = DataTables("综合组").AddNew
                nr("桌号") = 0
                If c <= drs5.Count - 1
                    nr("红方_编号") = drs5(c)("编号")
                    nr("红方_姓名") = drs5(c)("姓名")
                    nr("红方_上轮止累计积分") = drs5(c)("上轮止累计积分")
                    nr("红方_曾交战对手累计积分") = drs5(c)("曾交战对手累计积分")
                End If
                If c1 <= drs5.Count - 1
                    nr("黑方_编号") = drs5(c1)("编号")
                    nr("黑方_姓名") = drs5(c1)("姓名")
                    nr("黑方_上轮止累计积分") = drs5(c1)("上轮止累计积分")
                    nr("黑方_曾交战对手累计积分") = drs5(c1)("曾交战对手累计积分")
                End If
            Next
            DataTables("比赛积分").SQLUpdate(drs5)
        End If
        Tables("比赛积分").Sort = "日期 DESC,棋赛名称,分组,轮赛次数值转换 DESC"


 回到顶部
总数 22 1 2 3 下一页