Перейти к основному контенту
Поддержка
Войдите с помощью учетной записи Майкрософт
Войдите или создайте учетную запись.
Здравствуйте,
Выберите другую учетную запись.
У вас несколько учетных записей
Выберите учетную запись, с помощью которой нужно войти.

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 2013).

  5. Перетащите нужные поля в сетку.

  6. В первом пустом столбце строки Поле введите Expr1: StrToHex([SortField]).

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

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

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

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

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

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

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

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

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

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

Были ли сведения полезными?

Насколько вы удовлетворены качеством перевода?
Что повлияло на вашу оценку?
После нажатия кнопки "Отправить" ваш отзыв будет использован для улучшения продуктов и служб Майкрософт. Эти данные будут доступны для сбора ИТ-администратору. Заявление о конфиденциальности.

Спасибо за ваш отзыв!

×