Records sorteren in hoofdlettergevoelige sorteervolgorde

Van toepassing op
Access voor Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Access records worden in oplopende of aflopende volgorde gesorteerd, ongeacht de aanvraag. U kunt echter wel een paar regels VBA-code (Visual Basic for Applications) schrijven om tekst te sorteren op de ASCII-tekenwaarden. Door te sorteren op ASCII-waarden worden hoofdletters onderscheiden van kleine letters en krijgt u een hoofdlettergevoelige volgorde.

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 op het eerste gezicht onvoorspelbaar lijken, zijn ze dat niet. In die kolom wordt 'a' weergegeven vóór 'A' en 'B' voor 'b'. Dit komt omdat, wanneer Access deze evalueert als tekstwaarden, "A" = "a" en "B" = "b", kleine letters of hoofdletters zijn. In Access wordt dan de oorspronkelijke volgorde van de waarden gebruikt. In de kolom met de vooraf gesorteerde volgorde komt 'a' voor 'A' en 'B' voor 'b'.

Wanneer de hoofdlettergevoelige sortering wordt uitgevoerd, worden de tekstwaarden vervangen door de ASCII-waarden. Bijvoorbeeld A = 65, a = 97, B = 66 en b = 98.

De VBA-code schrijven

  1. Maak een VBA-module. Typ in de declaratiesectie de volgende regel als deze er niet al staat:

    Option Explicit
    
  2. 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 door de gebruiker gedefinieerde StrToHex functie kan worden aangeroepen vanuit een query. Wanneer u de naam van het sorteerveld aan deze functie doorgeeft, worden de veldwaarden in hoofdlettergevoelige volgorde gesorteerd.

  3. Maak een query die deze functie aanroept. Klik op het tabblad Maken in de groep Query's op Queryontwerp.

  4. Selecteer Tabellen toevoegen (tabel weergeven in Access).

  5. Sleep de velden die u wilt naar het raster.

  6. Typ Expr1: StrToHex([SortField])in de eerste lege kolom in de rij Veld. StrToHex is de door de gebruiker gedefinieerde functie die u eerder hebt gemaakt. Vervang deze naam SortField door de naam van het veld dat de hoofdlettergevoelige waarden bevat.

  7. In Cel sorteren, klikt u op Oplopend of Aflopend. Als u een oplopende volgorde kiest, worden waarden die beginnen met hoofdletters weergegeven vóór waarden die met kleine letters beginnen. Aflopende volgorde doet het tegenovergestelde.

  8. Schakel over naar de gegevensbladweergave. Access laat de records zien die op hoofdlettergevoelige volgorde zijn gesorteerd.