Access sorterer poster i stigende eller faldende rækkefølge uden hensyntagen til store eller små bogstaver. Ved at skrive nogle få linjer VBA-kode (Visual Basic for Applications) kan du imidlertid sortere tekst efter ASCII-tegnværdierne. Sortering på grundlag af ASCII-værdierne adskiller de store bogstaver fra de små bogstaver og resulterer i en rækkefølge, hvor der skelnes mellem store og små bogstaver.
Følgende tabel viser, hvordan en stigende sorteringsrækkefølge i Access adskiller sig fra en sorteringsrækkefølge, der adskiller store og små bogstaver:
Forudsorteringsrækkefølge |
Stigende rækkefølge |
Rækkefølge med forskel på store og små bogstaver |
---|---|---|
c |
a |
A |
D |
A |
B |
a |
B |
C |
d |
b |
D |
B |
c |
a |
C |
C |
b |
A |
D |
c |
b |
d |
d |
Selvom resultaterne i kolonnen Stigende rækkefølge i starten muligvis ser lidt uforudsigelige ud, er de det ikke. I kolonnen Stigende rækkefølge vises "a" før "A" og " B" før "b". Dette sker, fordi "A" = "a" og "B" = "b", når de evalueres som tekstværdier, uanset om de er små eller store bogstaver. Access tager højde for værdiernes oprindelige rækkefølge. I kolonnen Forudsorteringsrækkefølge står "a" foran "A" og "B" foran "b".
Når sorteringshandlingen mellem store og små bogstaver udføres, erstattes tekstværdierne med deres ASCII-værdier. F.eks. A = 65, a = 97, B = 66, b = 98 osv.
Skriv VBA-koden
-
Opret et VBA-modul, og skriv følgende linje i Erklæringssektion, hvis den ikke allerede findes:
Option Explicit
-
Skriv følgende fremgangsmåde i et 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 foregående brugerdefinerede funktion, StrToHex, kan kaldes fra en forespørgsel. Når du videregiver navnet på sorteringsfeltet til denne funktion, sorterer den feltværdierne i rækkefølge, hvor der tages hensyn til store eller små bogstaver.
-
Nu skal du oprette en forespørgsel, hvorfra du kan kalde denne funktion.
Klik på Forespørgselsdesign i gruppen Forespørgsler under fanen Opret.
-
Vælg Tilføj tabeller (Vis tabel i Access).
-
Træk de felter, du ønsker, til gitteret.
-
I den første tomme kolonne i rækken Felt skal du skrive Expr1: StrToHex([SortField]).
StrToHex er den brugerdefinerede funktion, du oprettede tidligere. SortField er navnet på det felt, der indeholder de værdier, der er følsomme over for store og små bogstaver.
-
Klik på Stigende eller Faldende i cellen Sortér.
Hvis du vælger stigende rækkefølge, vises værdien, der begynder med store bogstaver, før dem, der begynder med små bogstaver. Anvendelse af sortering i faldende rækkefølge gør det modsatte.
-
Skift til dataarkvisning.
Access viser posterne sorteret i rækkefølge, med hensyntagen til store og små bogstaver.