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
Creare un modulo VBA. Nella sezione Dichiarazioni digitare la riga seguente, se già non 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
StrToHexdall'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.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 i precedenza. SostituireSortFieldcon il nome del campo che contiene i valori con distinzione tra maiuscole/minuscole.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.
Passa a Visualizzazione Foglio dati. Access consente di visualizzare i record con un ordine con distinzione tra maiuscole e minuscole.