Ordinare i record con distinzione tra maiuscole e minuscole

Si applica a
Access per Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Access ordina i record in ordine crescente o decrescente senza tener conto delle maiuscole/minuscole. Tuttavia, è possibile scrivere poche righe di codice Visual Basic, Applications Edition (VBA) per ordinare il testo in base ai valori dei caratteri ASCII. L'ordinamento in base ai valori ASCII distingue le lettere maiuscole da quelle minuscole e consente di applicare un ordine con distinzione tra maiuscole e minuscole.

La tabella seguente illustra come un ordine crescente si distingua da un ordine con distinzione tra maiuscole/minuscole:

Pre-ordine Ordine crescente Ordine con distinzione tra maiuscole e minuscole
c a A
D A B
a B C
g b D
B c a
C C b
A D c
b g g

Anche se i risultati nella colonna Ordine crescente possono sembrare imprevedibili all'inizio, non lo sono. In tale colonna, "a" appare prima di "A" e "B" appare prima di "b". Questo accade perché, quando Access li valuta come valori di testo, "A" = "a" e "B" = "b", indipendentemente dal fatto che siano minuscole o maiuscole. In Access viene quindi usato l'ordine originale dei valori. Nella colonna di pre-ordine , "a" precede "A" e "B" precede "b".

Quando viene eseguito l'ordinamento con distinzione tra maiuscole/minuscole, i valori di testo vengono sostituti con i loro valori ASCII. Ad esempio, A = 65, a = 97, B = 66 e b = 98.

Scrivere il codice VBA

  1. Creare un modulo VBA. Nella sezione Dichiarazioni digitare la riga seguente, se già non presente:

    Option Explicit
    
  2. Digitare la procedura seguente in un modulo nel 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
    

    La funzione definita StrToHex dall'utente può essere chiamata da una query. Quando si passa il nome del campo di ordine a questa funzione, i valori del campo vengono ordinati secondo un ordine con distinzione tra maiuscole e minuscole.

  3. Creare una query che chiama questa funzione. Nel gruppo Query della scheda Crea fare clic su Struttura query.

  4. Selezionare Aggiungi tabelle (Mostra tabella in Access).

  5. Selezionare i campi desiderati sulla griglia.

  6. Nella prima colonna vuota, nella riga Campo , digitare Expr1: StrToHex([SortField]). StrToHex è la funzione definita dall'utente creata i precedenza. Sostituire SortField con il nome del campo che contiene i valori con distinzione tra maiuscole/minuscole.

  7. Nella cella Ordine fare clic su Crescente o Decrescente. Se si sceglie ordine crescente, i valori che iniziano con lettere maiuscole vengono visualizzati prima di quelli che iniziano con lettere minuscole. L'ordine decrescente fa il contrario.

  8. Passa a Visualizzazione Foglio dati. Access consente di visualizzare i record con un ordine con distinzione tra maiuscole e minuscole.