Access records worden in oplopende of aflopende volgorde gesorteerd, ongeacht de aanvraag. Als u echter een paar regels VBA-code (Visual Basic for Applications) schrijft, kunt u tekst sorteren op de ASCII-tekenwaarden. Bij het sorteren op basis van de ASCII-waarden worden de hoofdletters onderscheiden van de kleine letters en wordt er een hoofdlettergevoelige volgorde uitgevoerd.
In de volgende tabel wordt weergegeven hoe een oplopende sorteervolgorde in Access verschilt van een hoofdlettergevoelige sorteervolgorde:
Volgorde vooraf sorteren |
Oplopende volgorde |
Hoofdlettergevoelige volgorde |
---|---|---|
c |
a |
A |
D |
A |
B |
a |
B |
C |
d |
b |
D |
B |
c |
a |
C |
C |
b |
A |
D |
c |
b |
d |
d |
Hoewel de resultaten in de kolom met oplopende volgorde in eerste instantie enigszins onvoorspelbaar kunnen lijken, zijn ze dat niet. In de kolom met oplopende volgorde wordt 'a' weergegeven vóór 'A' en 'B' voor 'b'. De fout treedt op, omdat wanneer het wordt geëvalueerd als tekstwaarde 'A' = 'a' en 'B' = 'b', kleine letters of hoofdletters zijn. In Access wordt rekening gehouden met de oorspronkelijke volgorde van de waarden. In de kolom met de vooraf gesorteerde volgorde gaat 'a' vooraf aan 'A' en 'B' vooraf aan 'b'.
Wanneer de volgorde op hoofdlettergevoelig wordt uitgevoerd, worden de tekstwaarden vervangen door de ASCII-waarden. Bijvoorbeeld A = 65, a = 97, B = 66, b = 98, etc.
De VBA-code schrijven
-
Maak een VBA-module en typ de volgende regel in de declaratiesectie, als deze er niet al staat:
Option Explicit
-
Typ de volgende procedure in een module in Visual Basic Editor:
Function StrToHex (S As Variant) As Variant ' ' Converts a string to a series of hexadecimal digits. ' For example, StrToHex(Chr(9) & "A~") returns 09417E. ' Dim Temp As String, I As Integer If VarType(S) <> 8 Then StrToHex = S Else Temp = "" For I = 1 To Len(S) Temp = Temp & Format(Hex(Asc(Mid(S, I, 1))), "00") Next I StrToHex = Temp End If End Function
De voorgaande door de gebruiker gedefinieerde functie, StrToHex, kan worden aangeroepen vanuit een query. Wanneer u de naam van het sorteerveld aan deze functie doorgeeft, worden de veldwaarden in hoofdlettergevoelige volgorde gesorteerd.
-
Maak nu een query aan van waaruit u deze functie aanroept.
Klik op het tabblad Maken in de groep Query's op Queryontwerp.
-
Selecteer Tabellen toevoegen (Tabel weergeven in Access).
-
Sleep de velden die u wilt naar het raster.
-
In de eerste lege column, in de Veldrij, typt u Expr1: StrToHex([SortField]).
StrToHex is de door de gebruiker gedefinieerde functie die u eerder hebt aangemaakt. SortField is de naam van het veld dat de hoofdlettergevoelige waarden bevat.
-
In Cel sorteren, klikt u op Oplopend of Aflopend.
Als u een oplopende volgorde kiest, wordt een waarde die begint met hoofdletters weergegeven vóór de letters die met kleine letters beginnen. Het toepassen van een aflopende sorteervolgorde doet het tegenovergestelde.
-
Ga terug naar de gegevensbladweergave.
Access laat de records zien die op hoofdlettergevoelige volgorde zijn gesorteerd.