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

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

В следующей таблице показано, чем порядок сортировки по возрастанию в Access отличается от порядка сортировки с учетом регистра.

Порядок перед сортировкой

По возрастанию

С учетом регистра

c

a

A

D

A

B

a

B

C

d

b

D

B

c

a

C

C

b

A

D

c

b

d

d

Хотя результаты в столбце "По возрастанию" могут сначала показаться несколько неожиданными, это не так. В столбце "По возрастанию" перед "A" отображается "a", а перед "b" — "B". Причиной является то, что при оценке текстовых значений "A" = "a" и "B" = "b", независимо от регистра. Access учитывает исходный порядок значений. В столбце "Порядок перед сортировкой" буква "a" находится перед "А", а буква "B" — перед "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. В первом пустом столбце строки Поле введите Expr1: StrToHex([SortField]).

    StrToHex — это пользовательская функция, созданная ранее. SortField — это имя поля, содержащего значения с учетом регистра.

  7. В ячейке Сортировка выберите вариант По возрастанию или По убыванию.

    Если выбрать сортировку по возрастанию, значение, начинающееся с прописных букв, будет отображаться перед значениями, начинающимися со строчных букв. При применении варианта "По убыванию" сортировка выполняется в обратном порядке.

  8. Переключитесь в режим таблицы.

    Access отображает записи, отсортированные с учетом регистра.

К началу страницы

Нужна дополнительная помощь?

Нужны дополнительные параметры?

Изучите преимущества подписки, просмотрите учебные курсы, узнайте, как защитить свое устройство и т. д.

В сообществах можно задавать вопросы и отвечать на них, отправлять отзывы и консультироваться с экспертами разных профилей.