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
Creare un modulo VBA. Nella sezione Dichiarazioni digitare la riga seguente, se non è già presente:
Option ExplicitDigitare 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 FunctionLa funzione definita dall'utente
StrToHexpuò 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.Creare una query che chiama questa funzione. Nel gruppo Query della scheda Crea fare clic su Struttura query.
Selezionare Aggiungi tabelle (Mostra tabella in Access).
Selezionare i campi desiderati sulla griglia.
Nella prima colonna vuota, nella riga Campo , digitare
Expr1: StrToHex([SortField]).StrToHexè la funzione definita dall'utente creata in precedenza. SostituireSortFieldcon il nome del campo contenente i valori con distinzione tra maiuscole e minuscole.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.
Passare alla visualizzazione Foglio dati. Access consente di visualizzare i record con un ordine con distinzione tra maiuscole e minuscole.