"Access" įrašus rikiuoja didėjimo arba mažėjimo tvarka neatsižvelgdama į didžiąsias ir mažąsias raides. Tačiau įrašydami kelias eilutes "Visual Basic for Applications" (VBA) kodo, galite rikiuoti tekstą pagal jo ASCII simbolių reikšmes. Rūšiuojant pagal ASCII reikšmes, didžiosios ir mažosios raidės atskiriamos nuo mažųjų ir gaunama didžiųjų ir mažųjų raidžių tvarka.
Toliau pateiktoje lentelėje parodyta, kuo didėjimo tvarka programoje "Access" skiriasi nuo rikiavimo tvarkos, kurioje skiriamos didžiosios ir mažosios raidės:
| Išankstinio rikiavimo tvarka | Didėjančia tvarka | Tvarka, kurioje atsižvelgiama į didžiąsias ir mažąsias raides |
|---|---|---|
| c | a | A |
| D | A | B |
| a | B | C |
| d | b | D |
| B | c | a |
| C | C | b |
| A | D | c |
| b | d | d |
Nors rezultatai stulpelyje Didėjimo tvarka iš pradžių gali atrodyti šiek tiek nenuspėjami, taip nėra. Stulpelyje Didėjimo tvarka prieš "A" rodoma "a", o prieš "b" – "B". Taip atsitinka todėl, kad vertinant kaip tekstines reikšmes, "A" = "a" ir "B" = "b", nesvarbu, ar tai būtų mažosios ar didžiosios raidės. Programa Access atsižvelgia į pradinę reikšmių tvarką. Išankstinio rikiavimo tvarkos stulpelyje "a" yra prieš "A", "b" – prieš "b".
Atlikus rūšiavimo operaciją, skiriančią didžiąsias ir mažąsias raides, teksto reikšmės pakeičiamos jų ASCII reikšmėmis. Pvz., A = 65, a = 97, B = 66, b = 98 ir t. t.
Parašykite VBA kodą
Sukurkite VBA modulį ir įveskite šią eilutę skyriuje Deklaracijos, jei jos dar nėra:
Option Explicit"Visual Basic" rengyklės modulyje įveskite šią procedūrą:
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 FunctionAnkstesnę vartotojo apibrėžtą funkciją StrToHex galima iškviesti iš užklausos. Kai šiai funkcijai perduodate rūšiavimo lauko pavadinimą, laukų reikšmės bus rikiuojamos didžiųjų ir mažųjų raidžių tvarka.
Dabar sukurkite užklausą, iš kurios iškviesite šią funkciją.
Skirtuko Kūrimas grupėje Užklausos spustelėkite Užklausos dizainas.Pasirinkite Įtraukti lentelių (rodyti lentelę programoje "Access").
Nuvilkite norimus laukus į tinklelį.
Pirmame tuščiame stulpelyje, eilutėje Laukas , įveskite Išraiška1: StrToHex([RūšiuotiLaukas]).
"StrToHex" yra vartotojo apibrėžta funkcija, kurią sukūrėte anksčiau. SortField yra lauko, kuriame yra reikšmės, skiriančios didžiąsias ir mažąsias raides, pavadinimas.Rūšiavimo langelyje spustelėkite Didėjimo arba mažėjimo tvarka.
Jei pasirinksite didėjimo tvarką, reikšmė, prasidedanti didžiosiomis raidėmis, bus rodoma prieš tas, kurios prasideda mažosiomis raidėmis. Taikant rūšiavimą mažėjimo tvarka atliekamas priešingai.Įjungti duomenų lapo rodinį.
Programa "Access" rodo įrašus, surikiuotus pagal didžiąsias ir mažąsias raides.