Access sorterar poster i stigande eller fallande ordning, utan hänsyn till skiftläge. Men genom att skriva några rader med VBA-kod (Visual Basic for Applications) kan du sortera text efter dess ASCII-teckenvärden. Om du sorterar utifrån ASCII-värden skiljer sig versaler från gemener och resulterar i en skiftlägeskänslig sorteringsordning.
I följande tabell visas hur en stigande sorteringsordning i Access skiljer sig från en skiftlägeskänslig sorteringsordning:
Försorteringsordning |
Stigande sorteringsordning |
Skiftlägeskänslig sorteringsordning |
---|---|---|
c |
a |
A |
D |
A |
B |
a |
B |
C |
d |
b |
D |
F |
c |
a |
C |
C |
b |
A |
D |
c |
b |
d |
d |
Även om resultaten i kolumnen i stigande ordning först kan se lite oförutsägbara ut så är de inte det. I kolumnen i stigande ordning visas "a" före "A" och " B" före "b". Detta inträffar eftersom, när det utvärderas som textvärden, "A" = "a" och "B" = "b," oavsett om det är gemener eller versaler. Access tar hänsyn till den ursprungliga ordningen av värdena. I kolumnen i försorteringsordning föregår "a" före "A" och "B" före "b".
När den skiftlägeskänsliga sorteringsåtgärden utförs ersätts textvärdena med deras ASCII-värden. Till exempel A = 65, a = 97, B = 66, b = 98 och så vidare.
Skriv VBA-koden
-
Skapa en VBA-modul och skriv följande rad i avsnittet Deklarationer om den inte redan finns:
Option Explicit
-
Skriv följande procedur i en modul i 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
Den föregående användardefinierade funktionen StrToHex, kan anropas från en fråga. När du skickar namnet på sorteringsfältet till den här funktionen sorteras fältvärdena i skiftlägeskänslig sorteringsordning.
-
Skapa nu en fråga som du kommer att anropa den här funktionen från.
Klicka på Frågedesign i gruppen Frågor på fliken Skapa.
-
Välj Lägg till tabeller (Visa tabell i Access).
-
Dra de fält du vill ha till rutnätet.
-
I den första tomma kolumnen, på raden Fält, skriver du Uttr1: StrToHex([SortField]).
StrToHex är den användardefinierade funktionen som du skapade tidigare. SortField är namnet på det fält som innehåller de skiftlägeskänsliga värdena.
-
Välj Sortera celler Stigande eller Fallande.
Om du väljer stigande ordning visas värdet som börjar med versaler före de som börjar med gemener. Om du använder en fallande sorteringsordning är resultatet motsatt.
-
Växla till databladsvy.
Access visar posterna sorterade i skiftlägeskänslig ordning.