这代码中的排序是过渡性取数,对阵表的桌号有重新排序意图,问题是如何重新排序,再存回比赛积分表?我是通过保存按钮实现的,
Case "保存"
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
For Each nr As Row In Tables("综合组").Rows
Dim dr As DataRow = DataTables("比赛积分").SQLfind("[棋赛名称] = '" & di1 & "'And [第几轮比赛] = '" & di2 & "'And [分组] = '综合组' And [编号] = '" & nr("红方_编号") & "'")
If dr IsNot Nothing Then
dr("桌号") = nr("桌号")
dr("积分") = nr("当前局成绩_红方")
dr.Save
End If
dr = DataTables("比赛积分").SQLfind("[棋赛名称] = '" & di1 & "'And [第几轮比赛] = '" & di2 & "'And [分组] = '综合组' and [编号]='" & nr("黑方_编号") & "'")
If dr IsNot Nothing Then
dr("桌号") = nr("桌号")
dr("积分") = nr("当前局成绩_黑方")
dr.Save
End If
Next
DataTables("比赛积分").load
End Select
但未重新排序,而是直接=排序数,这有违我设置初衷,刚想了一下,把上一轮(a)的数据通过临时表过渡,即:
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
改用临时表计算,然后对其重新排序,再赋值到比赛积分表本轮新添行(dr)中,这绕一圈就可把全部问题解决了,问题是我不知如何对临时表赋值,重新排序,再赋回dr中,简单问题,复杂的处理,头痛中!
[此贴子已经被作者于2020/6/28 9:21:39编辑过]