Access ordina i record in ordine crescente o decrescente senza tener conto delle maiuscole/minuscole. Tuttavia, scrivendo poche righe di codice Visual Basic, Applications Edition (VBA), è possibile ordinare il testo in base ai valori dei caratteri ASCII. L’ordinane in base ai valori dei caratteri ASCII differenzia le lettere maiuscole da quelle minuscole e dà come risultato 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 apparire piuttosto imprevedibili, in realtà non lo sono. Nella colonna Ordine crescente, “a” appare prima di “A” e “B” appare prima di “b”. Questo si verifica perché, quando valutate come valori di testo, “A" = "a" e "B" = "b", sia se lettera minuscola che lettera maiuscola. Access tiene conto dell’ordine originario dei valori. Nella colonna di pre-ordine, "a" precede "A" e "B" precede "b."
Quando viene eseguita l’operazione di ordine con distinzione tra maiuscole/minuscole, i valori di testo vengono sostituti con i loro valori ASCII. Ad esempio, A = 65, a = 97, B = 66, b = 98 e così via.
Scrivere il codice VBA
-
Creare un modulo VBA e digitare la riga seguente nella sezione Dichiarazioni, se già non presente:
Option Explicit
-
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 precedente funzione definita dall'utente, StrToHex, può essere chiamata da una query. Quando si passa il nome del campo di ordine a questa funzione, i valori del campo saranno ordinati secondo un ordine con distinzione tra maiuscole e minuscole.
-
Creare ora una query dalla quale chiamare 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. SortField è 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, il valore che inizia con le lettere maiuscole verrà visualizzato prima di quelli che iniziano con le lettere minuscole. Applicando un ordine decrescente si ottiene il risultato opposto.
-
Passa a Visualizzazione Foglio dati.
Access consente di visualizzare i record con un ordine con distinzione tra maiuscole e minuscole.