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 tenere conto delle maiuscole/minuscole. È tuttavia possibile scrivere alcune 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 dalle minuscole e fornisce 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 all'inizio potrebbero sembrare imprevedibili, non lo sono. In quella colonna, "a" viene visualizzato prima di "A" e "B" prima di "b". Questo accade perché, quando Access li valuta come valori di testo, "A" = "a" e "B" = "b", sia che siano minuscoli o maiuscoli. Access usa quindi l'ordine originale dei valori. Nella colonna Preordinare "a" precede "A" e "B" prima di "b".

Quando viene eseguito l'ordinamento con distinzione tra maiuscole e minuscole, i valori di testo vengono sostituiti con i relativi 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 non è già 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 dall'utente StrToHex può essere chiamata da una query. Quando si passa il nome del campo di ordinamento a questa funzione, i valori del campo vengono ordinati 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 in precedenza. Sostituire SortField con il nome del campo contenente i valori con distinzione tra maiuscole e minuscole.

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

  8. Passare alla visualizzazione Foglio dati. Access consente di visualizzare i record con un ordine con distinzione tra maiuscole e minuscole.