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
Maak een VBA-module. Typ in de declaratiesectie de volgende regel als deze er niet al staat:
Option ExplicitTyp 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 FunctionDe door de gebruiker gedefinieerde
StrToHexfunctie 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 een query die 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.
Typ
Expr1: StrToHex([SortField])in de eerste lege kolom in de rij Veld.StrToHexis de door de gebruiker gedefinieerde functie die u eerder hebt gemaakt. Vervang deze naamSortFielddoor 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, worden waarden die beginnen met hoofdletters weergegeven vóór waarden die met kleine letters beginnen. Aflopende volgorde doet het tegenovergestelde.
Schakel over naar de gegevensbladweergave. Access laat de records zien die op hoofdlettergevoelige volgorde zijn gesorteerd.