以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 排序效率 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=95266) |
-- 作者:刘林 -- 发布时间:2017/1/14 17:43:00 -- 排序效率 Dim cmd As New SQLCommand Dim dt As DataTable cmd.c Dim schoolname As String = user.group cmd.CommandText = "SELE CT 考试名称,学校,年级,学校班级,总分,班序,校序,[_Identify] from {小生表}" dt = cmd.ExecuteReader(True) Dim Arys As List(Of String()) = dt.GetValues("考试名称|学校|年级") For Each Ary As String() In Arys Dim drs As List(Of DataRow) = dt.Select("[考试名称] = \'" & ary(0) & "\'And [学校] = \'" & ary(1) & "\'and [年级] =\'" & ary(2) & "\'", "总分 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 Next Dim Arys1 As List(Of String()) = dt.GetValues("考试名称|学校|年级|学校班级") For Each Ary1 As String() In Arys1 Dim drs As List(Of DataRow) = dt.Select("[考试名称] = \'" & ary1(0) & "\'And [学校] = \'" & ary1(1) & "\'and [年级] =\'" & ary1(2) & "\'And [学校班级] = \'" & ary1(3) & "\'", "总分 DESC") For m As Integer = 0 To drs.Count - 1 \'遍历所有行 If m > 0 AndAlso drs(m)("总分") = drs(m-1)("总分") Then \'如果总分和上一行相同 drs(m)("班序") = drs(m-1)("班序") \'则排名等于上一行 Else drs(m)("班序") = m + 1 \'设置排名 End If Next Next Dim Arys2 As List(Of String()) = dt.GetValues("考试名称|年级") For Each Ary2 As String() In Arys2 Dim drs As List(Of DataRow) = dt.Select("[考试名称] = \'" & ary2(0) & "\' And [年级] = \'" & ary2(1) & "\'", "总分 DESC") For m As Integer = 0 To drs.Count - 1 \'遍历所有行 If m > 0 AndAlso drs(m)("总分") = drs(m-1)("总分") Then \'如果总分和上一行相同 drs(m)("区序") = drs(m-1)("区序") \'则排名等于上一行 Else drs(m)("区序") = m + 1 \'设置排名 End If Next Next dt.save() DataTables("小生表").load 老师,我想用上面代码对成绩表排班序,校序,区序,效率很低,要等很久,请问如何能快速完成,前提是小生表不能加载,请指教,谢谢
|
-- 作者:有点色 -- 发布时间:2017/1/15 12:06:00 -- 加载和排序,并不会影响效率。你把这两句代码去掉,看看速度
dt.save()
DataTables("小生表").load
|
-- 作者:刘林 -- 发布时间:2017/1/15 21:03:00 -- 老师去掉两句到时快些了,但数据打开排序结果没写上,跟没排一样,有什么方法能够快速排好 |
-- 作者:有点色 -- 发布时间:2017/1/16 3:26:00 -- 以下是引用刘林在2017/1/15 21:03:00的发言:
老师去掉两句到时快些了,但数据打开排序结果没写上,跟没排一样,有什么方法能够快速排好
得到结果以后,合成sql语句,更新回数据库
http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=52855&skin=0
|