Ordenar registos por maiúsculas e minúsculas

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

  1. Crie um módulo VBA e introduza a seguinte linha na secção Declarações, caso ainda não exista:
Option Explicit
  1. 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.

  1. Agora, crie uma consulta a partir da qual irá chamar esta função.

No separador Criar, no grupo Outros, clique em Estruturar Consulta.

  1. Na caixa de diálogo Mostrar Tabela, clique na tabela que pretende ordenar e, em seguida, clique em Adicionar.
  2. Arraste os campos pretendidos para a grelha.
  3. 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.

  1. 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.

  1. 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 Início da Página

 
 
Aplica-se a:
Access 2007