以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 排序问题 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=151534) |
||||
-- 作者:采菊东篱下 -- 发布时间:2020/6/27 9:15:00 -- 排序问题
密码: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编辑过]
|
||||
-- 作者:有点蓝 -- 发布时间: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")
|
||||
-- 作者:采菊东篱下 -- 发布时间:2020/6/27 16:34:00 -- For i As Integer = Tables("比赛积分").TopPosition To Tables("比赛积分").BottomPosition Tables("比赛积分").Rows(i).load() Next |
||||
-- 作者:有点蓝 -- 发布时间:2020/6/27 17:00:00 -- 全部删除完再加载. 删除的代码 dataTables("比赛积分").load()
|
||||
-- 作者:采菊东篱下 -- 发布时间:2020/6/27 17:28:00 -- 我加了2楼代码报错,a代表上一轮轮次,第2轮的上轮止累计积分就是第一轮的积分,第一轮没有累计积分,因此不用写在第一轮后,写在第2轮后也同样报错,我试很多次了,不行!重新上传了项目,原来的项目我下载后试报错。 |
||||
-- 作者:有点蓝 -- 发布时间:2020/6/27 17:47:00 -- 这个"上轮止累计积分"是新增行后现加的,做排序没有意义 dr("上轮止累计积分") = drs4(ic)("上轮止累计积分") + drs4(ic)("积分") 方法1、新增完,再按照"上轮止累计积分"排序获取新增的行赋值“排序”列 2、增加一个“本轮总积分”列,填入积分后直接累加"上轮止累计积分",然后按照“本轮总积分”进行排序
|
||||
-- 作者:采菊东篱下 -- 发布时间:2020/6/27 17:59:00 -- 我没排序前显示的数据不是我要的,取数也很乱,新增的数据不用排序,生成后排序。 |
||||
-- 作者:采菊东篱下 -- 发布时间:2020/6/27 18:05:00 -- 本轮是按"日期 DESC,棋赛名称,分组,轮赛次数值转换 DESC,上轮止累计积分 DESC、曾交战对手累计积分"排序的。 [此贴子已经被作者于2020/6/28 20:01:01编辑过]
|
||||
-- 作者:有点蓝 -- 发布时间:2020/6/28 8:30:00 -- 那就到生成对阵表的时候再按照“上轮止累计积分”排序取值。在此之前新增的数据不用排序 |
||||
-- 作者:采菊东篱下 -- 发布时间: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" |