Applies ToAccess для Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Access сортує записи за зростанням або спаданням без урахування регістру. Однак, написавши кілька рядків коду Visual Basic for Applications (VBA), ви можете відсортувати текст за його значеннями символів ASCII. Сортування на основі значень ASCII відрізняє букви верхнього регістра від букв нижнього регістра та призводить до порядку з урахуванням регістра.

У таблиці нижче показано, чим порядок сортування за зростанням в Access відрізняється від порядку сортування з урахуванням регістра:

Порядок попереднього сортування

За зростанням

Порядок із урахуванням регістра

C

a

A

D

A

Б

a

B

C

д

b

D

Б

C

a

C

C

b

A

D

C

b

д

д

Хоча результати у стовпці За зростанням спочатку можуть здаватися дещо непередбачуваними, але це не так. У стовпці За зростанням "a" відображається перед відображенням "A" і "B" перед "б". Це відбувається тому, що під час обчислення як текстових значень "A" = "a" і "B" = "b", будь то нижній або верхній регістр. Access враховує вихідний порядок значень. У стовпці Порядок сортування перед символами "А" та "B" передує "б".

Під час виконання операції сортування з урахуванням регістра текстові значення замінюються на їхні значення ASCII. Наприклад, A = 65, a = 97, B = 66, b = 98 тощо.

Напишіть код VBA

  1. Створіть модуль VBA і введіть наведений нижче рядок у розділі Оголошення, якщо його ще немає:

    Option Explicit

  2. У модулі редактора 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
    

    Попередню користувацьку функцію StrToHex можна викликати із запиту. Коли ви передаєте ім'я поля сортування цій функції, вона сортуватиме значення полів у порядку з урахуванням регістра.

  3. Тепер створіть запит, з якого буде викликатися ця функція.

    На вкладці Створити в групі Запити натисніть кнопку Конструктор запитів.

  4. Виберіть Додати таблиці (відображати таблицю в Access).

  5. Перетягніть потрібні поля до сітки.

  6. У першому пустому стовпці в рядку Поле введіть Вираз1: StrToHex([SortField])).

    StrToHex – це користувацька функція, яку ви створили раніше. SortField – це ім'я поля, яке містить значення з урахуванням регістра.

  7. У клітинці Сортування натисніть кнопку За зростанням або За спаданням.

    Якщо вибрати порядок за зростанням, значення, яке починається з великих букв, відображатиметься перед тими, які починаються з малих букв. Застосування сортування за спаданням виконується навпаки.

  8. Перехід до вікна табличного подання даних.

    У програмі Access відобразяться записи, відсортовані за регістром.

На початок сторінки

Потрібна додаткова довідка?

Потрібні додаткові параметри?

Ознайомтеся з перевагами передплати, перегляньте навчальні курси, дізнайтесь, як захистити свій пристрій тощо.

Спільноти допомагають ставити запитання й відповідати на них, надавати відгуки та дізнаватися думки висококваліфікованих експертів.