Sortiranje zapisa po redosledu koji razlikuje mala i velika slova

Microsoft Office Access 2007 sortira zapise po rastućem i opadajućem redosledu bez obzira na veličinu slova. Međutim, ako napišete nekoliko redova VBA koda (Visual Basic for Applications), tekst možete da sortirate po ASCII vrednostima znakova. Sortiranje koje se zasniva na ASCII vrednostima razlikuje velika slova od malih, što za rezultat ima redosled koji razlikuje mala i velika slova.

U sledećoj tabeli je prikazana razlika između sortiranja po rastućem redosledu i sortiranja po redosledu koji razlikuje mala i velika slova u programu Access:

Redosled pre sortiranja Rastući redosled Redosled koji razlikuje mala i velika slova
c a A
D A B
a B C
d b D
B c a
C C b
A D c
b d d

Rezultati u koloni „Rastući redosled“ mogu se predvideti, iako se na prvi pogled može učiniti da to nije moguće. U toj koloni se „a“ pojavljuje pre „A“, a slovo „B“ pre „b“. To se dešava zbog toga što je u slučaju tekstualnih vrednosti „A“ = „a“, a „B“ = „b“, bilo da su u pitanju velika ili mala slova. Access uzima u obzir prvobitni redosled vrednosti. U koloni „Redosled pre sortiranja“ slovo „a“ prethodi slovu „A“, a „B“ prethodi slovu „b“.

Kada se izvrši operacija sortiranja po redosledu koji razlikuje mala i velika slova, tekstualne vrednosti se zamenjuju odgovarajućim ASCII vrednostima. Na primer, A = 65, a = 97, B = 66, b = 98 itd.

Pisanje VBA kôda

  1. Kreirajte VBA modul i upišite sledeći red u odeljak sa deklaracijama, ukoliko on već ne postoji:
Option Explicit
  1. U programu Visual Basic Editor upišite sledeću proceduru u modul:
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

Prethodna korisnički definisana funkcija „StrToHex“ može se pozvati iz upita. Kada se ime polja za sortiranje prosledi ovoj funkciji, vrednosti polja će se sortirati po redosledu koji razlikuje mala i velika slova.

  1. Sada kreirajte upit iz koga ćete pozvati ovu funkciju.

Na kartici Kreiranje, u grupi Ostalo izaberite stavku Dizajn upita.

  1. U dijalogu Prikazivanje tabele izaberite tabelu koju želite da sortirate, a zatim kliknite na dugme Dodaj.
  2. Prevucite željeno polje u koordinatnu mrežu.
  3. U prvoj praznoj koloni reda Polje upišite Expr1: StrToHex([PoljeZaSortiranje]).

„StrToHex“ predstavlja korisnički definisanu funkciju koju ste prethodno kreirali. „PoljeZaSortiranje“ jeste ime polja koje sadrži vrednosti koje razlikuju mala i velika slova.

  1. U ćeliji Sortiranje izaberite stavku Rastući redosled ili Opadajući redosled.

Ukoliko ste odabrali rastući redosled, vrednost koja počinje velikim slovima pojaviće se pre onih koje počinju malim slovima. Ako primenite opadajući redosled, situacija će biti obrnuta.

  1. Prebacite se na prikaz lista sa podacima

Access će prikazati zapise sortirane po redosledu koji razlikuje mala i velika slova.

Vrh stranice Vrh stranice

 
 
Primenljivo na:
Access 2007