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
-
Створіть модуль VBA і введіть наведений нижче рядок у розділі Оголошення, якщо його ще немає:
Option Explicit
-
У модулі редактора 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 можна викликати із запиту. Коли ви передаєте ім'я поля сортування цій функції, вона сортуватиме значення полів у порядку з урахуванням регістра.
-
Тепер створіть запит, з якого буде викликатися ця функція.
На вкладці Створити в групі Запити натисніть кнопку Конструктор запитів.
-
Виберіть Додати таблиці (відображати таблицю в Access).
-
Перетягніть потрібні поля до сітки.
-
У першому пустому стовпці в рядку Поле введіть Вираз1: StrToHex([SortField])).
StrToHex – це користувацька функція, яку ви створили раніше. SortField – це ім'я поля, яке містить значення з урахуванням регістра.
-
У клітинці Сортування натисніть кнопку За зростанням або За спаданням.
Якщо вибрати порядок за зростанням, значення, яке починається з великих букв, відображатиметься перед тими, які починаються з малих букв. Застосування сортування за спаданням виконується навпаки.
-
Перехід до вікна табличного подання даних.
У програмі Access відобразяться записи, відсортовані за регістром.