Access zoradí záznamy vzostupne alebo zostupne bez ohľadu na prípad. Ak však napíšete niekoľko riadkov kódu v jazyku Visual Basic for Applications (VBA), môžete text zoradiť podľa hodnôt znakov ASCII. Zoradenie na základe hodnôt ASCII rozlišuje veľké písmená od malých písmen a výsledkom je rozlišovanie malých a veľkých písmen.
Nasledujúca tabuľka ukazuje, ako sa vzostupný spôsob zoradenia v Accesse líši od spôsobu zoradenia rozlišujúceho malé a veľké písmená:
Poradie pred zoradením |
Vzostupné poradie |
Poradie rozlišujúce veľké a malé písmená |
---|---|---|
c |
z |
A |
Y |
A |
B |
z |
B |
C |
d |
b |
Y |
B |
c |
z |
C |
C |
b |
A |
Y |
c |
b |
d |
d |
Napriek tomu, že výsledky v stĺpci Vzostupné poradie sa môžu spočiatku javiť ako nepredvídateľné, opak je pravdou. V stĺpci Vzostupné poradie je „a“ pred „A“ a „B“ sa zobrazí pred „b“. Dochádza k tomu, pretože pri vyhodnocovaní textových hodnôt platí, že „A“ = „a“ a „B“ = „b“, či už sú písmená malým alebo veľkým písmom. Access berie do úvahy pôvodné poradie hodnôt. V stĺpci Poradie pred zoradením je „a“ pred „A“ a „B“ je pred „b“.
Keď sa vykoná operácia zoradenia s rozlíšením veľkých a malých písmen, textové hodnoty sa nahradia ich hodnotami ASCII. Napríklad A = 65, a = 97, B = 66, b = 98 atď.
Písanie kódu VBA
-
Vytvorte modul VBA a do sekcie deklarácií napíšte nasledujúci riadok, ak tam ešte nie je:
Option Explicit
-
Do modulu v programe Visual Basic Editor zadajte nasledujúci postup:
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
Predchádzajúcu používateľom definovanú funkciu StrToHex možno z dotazu volať. Keď do tejto funkcie odovzdáte názov poľa zoradenia, hodnoty poľa sa zoradia v poradí rozlišujúcom veľké a malé písmená.
-
Teraz vytvorte dotaz, z ktorého túto funkciu zavoláte.
Na karte Vytvoriť kliknite v skupine Dotazy na položku Návrh dotazu.
-
Vyberte položku Pridať tabuľky (zobraziť tabuľku v Accesse).
-
Presuňte do mriežky požadované polia.
-
Do prvého prázdneho stĺpca v riadku Pole zadajte Expr1: StrToHex([SortField]).
StrToHex je používateľom definovaná funkcia, ktorú ste predtým vytvorili. SortField je názov poľa, ktoré obsahuje hodnoty rozlišujúce veľké a malé písmená.
-
V bunke Zoradiť kliknite na položku Vzostupne alebo Zostupne.
Ak vyberiete vzostupné poradie, hodnota začínajúca veľkými písmenami sa zobrazí pred tými, ktoré sa začínajú malými písmenami. Ak použijete zostupné zoradenie, výsledok bude opačný.
-
Prepnite na údajové zobrazenie.
Access zobrazí záznamy zoradené v poradí rozlišujúcom veľké a malé písmená.