Access ordena os registos por ordem ascendente ou descendente independente do caso. Contudo, ao escrever algumas linhas de código VBA (Visual Basic for Applications), pode ordenar o texto por valores de carateres ASCII. A ordenação com base nos valores ASCII distingue as letras maiúsculas das minúsculas e resulta numa ordem sensível às maiúsculas e minúsculas.
A seguinte tabela demonstra como uma sequência de ordenação ascendente no Access difere de uma sequência de ordenação sensível às maiúsculas e minúsculas:
Pré-sequência de ordenação |
Ordem ascendente |
Ordenar por maiúsculas e minúsculas |
---|---|---|
c |
a |
A |
D |
A |
B |
a |
B |
C |
d |
b |
D |
N |
c |
a |
C |
C |
b |
A |
D |
c |
b |
d |
d |
Apesar de os resultados na coluna em ordem Ascendente pareçam estar apresentados de forma imprevisível, eles não o estão. Na coluna em ordem Ascendente, é apresentado o nome "a" antes de "A" e "B" é apresentado antes de "b". Isso ocorre porque, quando avaliados como valores de texto, "A" = "a" e "B" = "b", sejam eles em minúsculas ou em maiúsculas. O Access leva em conta a ordem original dos valores. Na coluna de ordem de Pré-sequência de ordenação, "a" precede "A" e "B" precede "b".
Quando a operação de classificação sensível às maiúsculas e minúsculas é executada, os valores de texto são substituídos por seus valores ASCII. Por exemplo, A = 65, a = 97, B = 66, b = 98 e assim por diante.
Escrever o código VBA
-
Crie um módulo VBA e escreva a linha seguinte na secção de Declarações, se ainda não estiver lá:
Option Explicit
-
Escreva o procedimento seguinte num módulo no Visual Basic Editor:
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
A função definida pelo utilizador anterior, StrToHex, pode ser chamada a partir de uma consulta. Quando passa o nome do campo de ordenação para esta função, ela irá ordenar os valores de campo numa ordem sensível às maiúsculas e minúsculas.
-
Agora, crie uma consulta a partir da qual irá chamar esta função.
No separador Criar, no grupo Consultas, clique em Estrutura da Consulta.
-
Selecione Adicionar Tabelas (Mostrar Tabela no Access).
-
Arraste os campos que pretende para a grelha.
-
Na primeira coluna em branco, na linha Campo, escreva Expr1: StrToHex([SortField]).
StrToHex é a função definida pelo utilizador que criou anteriormente. SortField é o nome do campo que contém os valores sensíveis às maiúsculas e minúsculas.
-
Na célula Classificar, clique em Ascendente ou Decrescente.
Se selecionar ordem ascendente, será apresentado o valor que começa com letras maiúsculas antes das que começam com letras minúsculas. Aplicar uma ordenação descendente faz o oposto.
-
Mudar para a Vista de Folha de Dados.
O Access apresenta os registos, ordenados em ordem sensível às maiúsculas e minúsculas.