Access сортира записите във възходящ или низходящ ред, без да отчита регистъра. Като напишете обаче няколко реда код на Visual Basic for Applications (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" предшества "A" и "B" предшества "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 показва записите, сортирани в ред с различаване на главните и малките букви.