Applies ToAccess dla Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Access sortuje rekordy w kolejności rosnącej lub malejącej bez uwzględnienia wielkości liter. Jednak pisząc kilka wierszy kodu w języku Visual Basic for Applications (VBA), możesz sortować tekst według wartości jego znaków ASCII. Sortowanie na podstawie wartości ASCII odróżnia wielkie litery od małych i w rezultacie kolejność uwzględnia wielkość liter.

W poniższej tabeli pokazano, czym różni się kolejność rosnąca w programie Access od kolejności sortowania uwzględniającej wielkość liter:

Kolejność przed sortowaniem

Kolejność rosnąca

Kolejność uwzględniająca wielkość liter

c

a

A

D

A

B

a

B

C

d

b

D

B

c

a

C

C

b

A

D

c

b

d

d

Mimo że wyniki w kolumnie Kolejność rosnąca mogą na początku wydawać się nieco nieprzewidywalne, w rzeczywistości takie nie są. W kolumnie Kolejność rosnąca „a” pojawia się przed „A”, a „b” pojawia się przed „B”. Dzieje się tak, ponieważ gdy traktujemy je jako wartości tekstowe, „a” = „A” i „B” = „b” niezależnie czy jest to mała czy wielka litera. Program Access uwzględnia oryginalną kolejność wartości. W kolumnie Kolejność przed sortowaniem „a” poprzedza „A”, a „B” poprzedza „b”.

Gdy wykonywana jest operacja sortowania uwzględniająca wielkość liter, wartości tekstowe są zastępowane ich wartościami ASCII. Na przykład A = 65, a = 97, B = 66, b = 98 i tak dalej.

Pisanie kodu VBA

  1. Utwórz moduł VBA i wpisz następujący wiersz w sekcji Deklaracje, jeśli jeszcze go nie ma:

    Option Explicit

  2. Wpisz następującą procedurę w module w Edytorze Visual Basic:

    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
    

    Poprzednią zdefiniowaną przez użytkownika funkcję, StrToHex, można wywołać z zapytania. Przekazanie nazwy pola sortowania do tej funkcji spowoduje posortowanie wartości pól w kolejności uwzględniającej wielkość liter.

  3. Teraz utwórz zapytanie, z którego będzie można wywołać tę funkcję.

    Na karcie Tworzenie w grupie Kwerendy kliknij pozycję Projekt kwerendy.

  4. Wybierz pozycję Dodaj tabele (Pokaż tabelę w programie Access).

  5. Przeciągnij pola, które chcesz dodać do siatki.

  6. W pierwszej pustej kolumnie w wierszu Pole wpisz Wyr1: StrToHex([SortField]).

    StrToHex to utworzona wcześniej funkcja zdefiniowana przez użytkownika. SortField to nazwa pola zawierającego wartości uwzględniające wielkość liter.

  7. W komórce Sortuj kliknij pozycję Rosnąco lub Malejąco.

    Jeśli wybierzesz kolejność rosnącą, wartości rozpoczynające się od wielkich liter pojawią się przed tymi, które rozpoczynają się małymi literami. Zastosowanie malejącej kolejności sortowania zadziała odwrotnie.

  8. Przełącz do widoku arkusza danych.

    Program Access wyświetli rekordy posortowane w kolejności uwzględniającej wielkość liter.

Początek strony

Potrzebujesz dalszej pomocy?

Chcesz uzyskać więcej opcji?

Poznaj korzyści z subskrypcji, przeglądaj kursy szkoleniowe, dowiedz się, jak zabezpieczyć urządzenie i nie tylko.

Społeczności pomagają zadawać i odpowiadać na pytania, przekazywać opinie i słuchać ekspertów z bogatą wiedzą.