Access sorterer poster i stigende eller synkende rekkefølge uten hensyn til sak. Ved å skrive noen få linjer med koden Visual Basic for Applications (VBA), kan du imidlertid sortere tekst etter tegnverdiene i ASCII. Sortering på grunnlag av verdiene i ASCII skiller mellom store og små bokstaver, og resulterer i en rekkefølge som skiller mellom store og små bokstaver.
Tabellen under viser hvordan en stigende sorteringsrekkefølge i Access varierer fra sorteringsrekkefølgen som skiller mellom store og små bokstaver:
Sorteringsrekkefølge |
Stigende rekkefølge |
Sortere etter store og små bokstaver |
---|---|---|
c |
a |
A |
D |
A |
B |
a |
B |
C |
d |
b |
D |
B |
c |
a |
C |
C |
b |
A |
D |
c |
b |
d |
d |
Selv om resultatene i kolonnen Stigende rekkefølge i begynnelsen kan virke litt utforutsigbare, er de ikke det. I kolonnen Stigende rekkefølge vises «a» før «A» og «B» vises før «b». Dette skjer fordi når de evalueres som tekstverdier, er "A" = "a" og "B" = "b," uansett om de er små eller store bokstaver. Access tar hensyn til den opprinnelige rekkefølgen av verdiene. I kolonnen for forhåndssorteringsrekkefølge står «a» foran «A» og «B» foran «b».
Når sorteringen som skiller mellom store og små bokstaver utføres, erstattes tekstverdiene med verdiene i ASCII. For eksempel A = 65, a = 97, B = 66, b = 98 og så videre.
Skriv inn VBA-koden
-
Opprett en VBA-modul, og skriv inn følgende linje i delen Deklarasjon, hvis den ikke allerede er der:
Option Explicit
-
Skriv inn følgende prosedyre 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 foregående brukerdefinerte funksjonen, StrToHex, kan kalles fra en spørring. Når du sender navnet på sorteringsfeltet til denne funksjonen, sorteres feltverdiene i rekkefølge som skiller mellom store og små bokstaver.
-
Nå kan du opprette en spørring som du vil kalle denne funksjonen.
I fanen Opprett i gruppen Spørringer, klikker du på Spørreutforming.
-
Velg Legg til tabeller (Vis tabell i Access).
-
Dra feltene du vil ha i rutenettet.
-
I den første tomme kolonnen i raden Felt skriver du Uttr1: StrToHex([SortField]).
StrToHex er den brukerdefinerte funksjonen du opprettet tidligere. SortField er navnet på feltet som inneholder verdiene som skiller mellom store og små bokstaver.
-
I cellen Sorter, klikker du på Stigende eller Synkende.
Hvis du velger stigende rekkefølge, vises verdier som begynner med store bokstaver før de som begynner med små bokstaver. Det motsatte er å bruke en synkende rekkefølge.
-
Bytte en dataarkvisning.
Access viser postene som er sortert i rekkefølge som skiller mellom store og små bokstaver.