欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

按从大到小排序

程序员文章站 2022-05-03 13:13:44
...

手机边亲爱的你还好吗?

 

大家开工了吗,这个超长假期过的怎么样?

 

我们在开发中应该都会遇到各种各样的排序问题,今天给大家分享数值的排序(成绩的排序)。

 

我们先来讲一下需求,现有一组数值,需要得到按从大到小的顺序得到数值的顺序,如果数值相同则得到相同的顺序。

 

我们还是老规矩,一步步的来操作。

 

01

一、建表

 

首先,如图需要先建一张表

 

按从大到小排序

接下去输入一些数据

 

按从大到小排序

 

02

二、建窗体

 

这次窗体有些复杂,窗体的默认视图为连续窗体,记录集类型为快照,清空排序的按钮名称为btnCancel,排序的按钮名称为btnOrder。

类似像下图的连续窗体,以后我们会讲,这里就不赘述了。

 

按从大到小排序

 

03

三、添加代码

 

代码已经给大家写好了,大家可以拿来直接用。

清空排序按钮单击事件

1Private Sub btnCancel_Click()
2
3    CurrentDb.Execute "UPDATE tblHochsprung SET tblScore.Rang = 0;"
4    Me.Requery
5End Sub

排序按钮单击事件

1Private Sub btnOrder_Click()
2    If Not RangBerechnen("tblScore", "Score") Then
3        MsgBox "排序失败"
4    End If
5    Me.Requery
6End Sub

排序自定义函数

 1Private Function RangBerechnen(TableName As String, LeistungFeld As String) As Boolean
 2    On Error GoTo ErrorHandler
 3    Dim rst As Object ' Recordset
 4    Dim iRang As Byte
 5    Dim iLeistung As Integer
 6    Dim iGleicherRang As Integer
 7    Set rst = CurrentDb.OpenRecordset("SELECT * FROM " & TableName & " ORDER BY " & LeistungFeld & " DESC", dbOpenDynaset)
 8    iRang = 1
 9
10
11    Do While Not rst.EOF
12        iLeistung = rst.Fields(LeistungFeld)
13        rst.Edit
14        rst!Rang = iRang
15        rst.Update
16        rst.MoveNext
17        If rst.EOF Then Exit Do
18        iGleicherRang = 0
19        Do While (rst.Fields(LeistungFeld) = iLeistung) '判断是否是相同的数值,如果是相同的,顺序+1
20            rst.Edit
21            rst!Rang = iRang
22            rst.Update
23            iGleicherRang = iGleicherRang + 1
24            rst.MoveNext
25            If rst.EOF Then Exit Do
26        Loop
27        iRang = iRang + 1 + iGleicherRang
28    Loop
29    rst.Close
30
31    RangBerechnen = True
32    Set rst = Nothing
33Exit_Rang:
34    Exit Function
35
36ErrorHandler:
37    MsgBox Err.Description, vbCritical
38    RangBerechnen = False
39    Resume Exit_Rang
40
41End Function

 

04

四、运行测试

运行结果如下图

 

按从大到小排序

 

好了,大家快去试一下吧。

按从大到小排序

武汉加油,中国加油!