Access classifica os registros em ordem crescente ou decrescente, independentemente do caso. No entanto, escrevendo algumas linhas de código do Visual Basic for Applications (VBA), você pode classificar o texto por seus valores de caracteres ASCII. A classificação com base nos valores ASCII diferencia as letras maiúsculas das minúsculas e resulta em uma ordem que diferenciar maiúsculas de minúsculas.
A tabela a seguir demonstra como uma ordem de classificação crescente no Access difere de uma ordem de classificação que diferencia maiúsculas de minúsculas:
Ordem de pré-classificação |
Ordem crescente |
Ordenar diferenciando maiúsculas de minúsculas |
---|---|---|
c |
a |
A |
D |
A |
B |
a |
B |
C |
d |
b |
D |
B |
c |
a |
C |
C |
b |
A |
D |
c |
b |
d |
d |
Embora os resultados na coluna em ordem Crescente possam inicialmente parecer um tanto imprevisíveis, mas eles não são. Na coluna de ordem Crescente, "a" aparece antes de "A" e "B" aparece antes de "b". Isso ocorre porque, quando avaliados como valores de texto, "A" = "a" e "B" = "b", sejam eles minúsculos ou maiúsculos. O acesso leva em consideração a ordem original dos valores. Na coluna ordem de Pré-classificação, "a" precede "A", e "B" precede "b".
Quando a operação de classificação que diferencia maiúsculas de 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.
Escreva o código VBA
-
Crie um módulo VBA e digite a seguinte linha na seção Declarações, se ainda não estiver lá:
Option Explicit
-
Digite o seguinte procedimento em um módulo no Editor do 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
A função definida pelo usuário anterior, StrToHex, pode ser chamada a partir de uma consulta. Quando você passa o nome do campo de classificação para esta função, ela classificará os valores do campo ordenando com diferenciação entre maiúsculas e minúsculas.
-
Agora, crie uma consulta a partir da qual você vai chamar esta função.
Na guia Criar, no grupo Consultas, clique em Design da Consulta.
-
Selecione Adicionar Tabelas (Mostrar Tabela no Access).
-
Arraste os campos que deseja para a grade.
-
Na primeira coluna em branco, na linha Campo, digite Expr1: StrToHex([SortField]).
StrToHex é a função definida pelo usuário que você criou anteriormente. SortField é o nome do campo que contém os valores que diferenciam maiúsculas e minúsculas.
-
Na célula Classifica , clique em Crescente ou Decrescente.
Se você escolher a ordem crescente, o valor que começa com letras maiúsculas aparecerá antes dos que começam com letras minúsculas. A aplicação de uma ordem decrescente faz o contrário.
-
Alterne para o modo de exibição de Folha de dados.
O Access exibe os registros, classificados em ordem de distinção entre maiúsculas e minúsculas.