O Microsoft Office Access 2007 ordena os registos por ordem ascendente ou descendente sem considerar maiúsculas e minúsculas. No entanto, escrevendo algumas linhas de código de Visual Basic for Applications (VBA), é possível ordenar o texto pelos respectivos valores de caracteres ASCII. A ordenação com base nos valores de ASCII distingue as letras maiúsculas das minúsculas, resultando numa ordenação por maiúsculas e minúsculas.
A tabela seguinte demonstra como uma sequência de ordenação ascendente no Access difere de uma sequência de ordenação por maiúsculas e minúsculas:
| Pré-sequência de ordenação |
Ordem ascendente |
Ordem por maiúsculas/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 Ordem ascendente possam parecer, à primeira vista, algo imprevisíveis, não o são. Na coluna Ordem ascendente, "a" aparece antes de "A" e "B" aparece antes de "b." Isto acontece porque, quando avaliados como valores de texto, "A" = "a" e "B" = "b," em minúsculas ou maiúsculas, o Access tem em consideração a ordem original dos valores. Na coluna Pré-sequência de ordenação, "a" precede "A" e "B" precede "b."
Quando a operação de ordenação por maiúsculas e minúsculas é executada, os valores de texto são substituídos pelos respectivos valores ASCII. Por exemplo, A = 65, a = 97, B = 66, b = 98 e assim sucessivamente.
Escrever o código de VBA
- Crie um módulo VBA e introduza a seguinte linha na secção Declarações, caso ainda não exista:
Option Explicit
- Introduza o seguinte procedimento 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 introduz o nome do campo de ordenação para esta função, os valores do campo são ordenados segundo as maiúsculas e minúsculas.
- Agora, crie uma consulta a partir da qual irá chamar esta função.
No separador Criar, no grupo Outros, clique em Estruturar Consulta.
- Na caixa de diálogo Mostrar Tabela, clique na tabela que pretende ordenar e, em seguida, clique em Adicionar.
- Arraste os campos pretendidos para a grelha.
- Na primeira coluna em branco, na linha Campo, escreva Expr1: StrToHex([CampoDeOrdenação]).
StrToHex é a função definida pelo utilizador, que criou anteriormente. CampoDeOrdenação é o nome do campo que contém os valores das maiúsculas e minúsculas.
- Na célula Ordenação, clique em Ascendente ou Descendente.
Se escolher a ordem ascendente, os valores que começam por letras maiúsculas aparecerão antes dos que começam por letras minúsculas. A aplicação da ordem descendente tem o efeito contrário.
- Mude para a Vista de folha de dados.
O Access apresenta os registos, ordenados por maiúsculas e minúsculas.
Início da Página