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". Това се случва, защото когато Access ги оценява като текстови стойности, "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).
Плъзнете полетата, които искате, в мрежата.
В първата празна колона, в реда "Поле " въведете
Expr1: StrToHex([SortField]).StrToHexе дефинираната от потребителя функция, която създадохте по-рано. ЗаместетеSortFieldс името на полето, съдържащо стойностите с различаване на малките и главните букви.В клетката "Сортиране" щракнете върху "Възходящ" или "Низходящ". Ако изберете възходящ ред, стойностите, които започват с главни букви, се появяват преди стойностите, които започват с малки букви. Низходящият ред прави обратното.
Превключване към изглед на лист с данни. Access показва записите, сортирани в ред с различаване на малките и главните букви.