Access VBA / Datastyring / Sortering af data
Sortering af data
Afhængigt af hvilken recordset type man arbejder med kan man få sorteres sine data:
Table
Her skal man bruge index metoden - et lille eksempel hentet fra hjælpefilen:
Sub IndexPropertyX()
Dim dbsNorthwind As Database
Dim tdfEmployees As TableDef
Dim rstEmployees As Recordset
Dim idxLoop As Index
Set dbsNorthwind = OpenDatabase("Northwind.mdb")
Set rstEmployees = dbsNorthwind.OpenRecordset("Employees")
Set tdfEmployees = dbsNorthwind.TableDefs!Employees
With rstEmployees
' Enumerate Indexes collection of Employees table.
For Each idxLoop In tdfEmployees.Indexes
.Index = idxLoop.Name
Debug.Print "Index = " & .Index
Debug.Print " EmployeeID - PostalCode - Name"
.MoveFirst
' Enumerate Recordset to show the order of records.
Do While Not .EOF
Debug.Print " " & !EmployeeID & " - " & _
!PostalCode & " - " & !FirstName & " " & _
!LastName
.MoveNext
Loop
Next idxLoop
.Close
End With
dbsNorthwind.Close
End SubDynaset
Her kan man bruge Sort metoden på recordsettet. Et lille eksempel jeg har bikset sammen:
Public Sub Gennemloeb()
Dim db As Database
Dim rs, rs2 As Recordset
Dim intAntal As Integer
Set db = CurrentDb()
Set rs = db.OpenRecordset("Kunder", dbOpenDynaset)
rs.Sort = "KøbIalt"
rs.MoveFirst
Set rs2 = rs.OpenRecordset
Do While Not rs2.EOF
Debug.Print rs2("Kundenr") & " " & rs2("Firma") & " " & rs2("KøbIalt")
rs2.MoveNext
Loop
rs.Close
rs2.Close
End Sub
Og her er forklaringen på at der skal bruges 2 recordsets:
"When you set this property for an object, sorting occurs when a subsequent Recordset object is created from that object."
SQL
Endelig kan man når man henter informationerne ind via et SQL kald med det samme sørge for at de er sorterede:
strSQL = "SELECT * FROM Kunder WHERE KøbIalt >= 100000 ORDER BY KøbIalt"
Hvis du vil lære mere om SQL kan jeg anbefale et kursus :-)
- eller at du kigger på www.w3schools.com
Når du har betalt for kurset får du adgang til øvelser til hver lektion.
Og når du har fået godkendt din besvarelse får du desuden adgang til mine løsningsforslag med ekstra tips og trix.