Сортировка записей с учетом регистра

Важно :  Данная статья переведена с помощью машинного перевода, см. Отказ от ответственности. Используйте английский вариант этой статьи, который находится здесь, в качестве справочного материала.

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

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

До сортировки

Сортировка по возрастанию

Как с учетом регистра r

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» предшествует «A», а «B» предшествует «b».

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

Написание кода VBA

  1. Создайте модуль VBA и введите в раздел описаний следующую строку (в случае ее отсутствия):

Option Explicit

  1. В редакторе 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 можно вызвать с помощью запроса. После того как имя поля сортировки будет передано этой функции, выполняется сортировка значений поля с учетом регистра.

  2. Создайте запрос для вызова этой функции.

    На вкладке Создание в группе Другие нажмите кнопку Конструктор запросов.

  3. В диалоговом окне Добавить таблицу выберите таблицу для сортировки и нажмите кнопку Добавить.

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

  5. В первой пустой столбец в строке поле введите Выражение1: StrToHex([SortField]).

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

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

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

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

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

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

Примечание : Отказ от ответственности относительно машинного перевода. Данная статья была переведена с помощью компьютерной системы без участия человека. Microsoft предлагает эти машинные переводы, чтобы помочь пользователям, которые не знают английского языка, ознакомиться с материалами о продуктах, услугах и технологиях Microsoft. Поскольку статья была переведена с использованием машинного перевода, она может содержать лексические,синтаксические и грамматические ошибки.

Совершенствование навыков
Перейти к обучению
Первоочередный доступ к новым возможностям
Присоединиться к программе предварительной оценки Office

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

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

Благодарим за отзыв! Возможно, будет полезно связать вас с одним из наших специалистов службы поддержки Office.

×