Questo argomento descrive la procedura per ordinare gli indirizzi IP (Internet Protocol) archiviati in un database Access elettronica.

Introduzione

Se si lavora con gli indirizzi IP, probabilmente si sa già che non è semplice come usare testo o numeri. Ciò è dovuto al fatto che un indirizzo IP è in realtà una raccolta di quattro valori numerici separati da un punto (.), dove ogni valore è un numero compreso tra 0 e 255. La tabella seguente mostra i dati prima dell'applicazione di qualsiasi ordinamento.

MachineID

Dipendente

Località

IPAddress

1

...

...

123.4.245.23

2

...

...

104.244.253.29

3

...

...

1.198.3.93

4

...

...

32.183.93.40

5

...

...

104.30.244.2

6

...

...

104.244.4.1

Ordinare gli indirizzi IP in Access è un'operazione difficile perché Access non fornisce un tipo di dati speciale per l'archiviazione degli indirizzi IP. Anche se un indirizzo IP è solo una raccolta di numeri, non è possibile archiviare un indirizzo IP in un campo numerico. Ciò è dovuto al fatto che un campo numerico supporta un solo separatore decimale (.), mentre un indirizzo IP contiene tre punti (.). Questo significa che è necessario archiviare gli indirizzi in un campo di testo.

Poiché gli indirizzi IP vengono archiviati in un campo di testo, non è possibile usare i pulsanti di ordinamento predefiniti di Access per ordinare gli indirizzi in modo significativo. I pulsanti di ordinamento ordinano sempre i valori in un campo di testo in ordine alfabetico, anche se i caratteri sono numeri. In altre parole, gli indirizzi sono ordinati in base alla prima cifra, quindi alla seconda cifra e così via, anziché in base ai valori numerici che costituiscono l'indirizzo. La tabella seguente mostra gli indirizzi della tabella precedente in ordine alfabetico in base al campo IPAddress.

MachineID

IPAddress

3

1.198.3.93

2

104.244.253.29

6

104.244.4.1

5

104.30.244.2

1

123.4.245.23

4

32.183.93.40

Gli indirizzi che iniziano con 1 vengono visualizzati prima degli indirizzi che iniziano con 2 e così via. La tabella seguente mostra gli indirizzi nell'ordine crescente corretto.

MachineID

IPAddress

3

1.198.3.93

4

32.183.93.40

5

104.30.244.2

6

104.244.4.1

2

104.244.253.29

1

123.4.245.23

Per semplificare la comprensione dei passaggi necessari per ordinare questi indirizzi, è necessario suddividere gli indirizzi IP in quattro parti numeriche. Gli indirizzi devono essere ordinati in base alla prima parte, quindi per ogni valore nella prima parte, poi in base alla seconda parte e così via. La tabella mostra ogni parte in una colonna diversa e, poiché le colonne contengono valori numerici semplici, diventa possibile ordinare le colonne da sinistra a destra in ordine crescente, come illustrato nella tabella seguente.

PartI

PartiI

Partiii

PartIV

1

198

3

93

32

183

93

40

104

30

244

2

104

244

4

1

104

244

253

29

123

4

245

23

Ordinare separatamente le quattro parti è un trucco per l'ordinamento degli indirizzi IP. Nella procedura seguente viene creata una query che, oltre al campo dell'indirizzo IP, include quattro colonne calcolate in cui ogni colonna archivia una parte dei valori di indirizzo. La prima colonna calcolata contenerà la prima parte numerica dell'indirizzo, la seconda la seconda parte numerica dell'indirizzo e così via. Invece di ordinare i record in base al campo IPAddress, la query ordina i record in base alle quattro colonne calcolate.

Creare la query

Verrà creata una query di selezione denominata Indirizzi IP ordinati che visualizza i record in ordine crescente di indirizzi IP. Si supponga che il database corrente abbia una tabella denominata Dettagli Computer che include un campo di testo denominato IPAddress.

  1. Fare clic su Crea > Struttura Query

  2. Selezionare Aggiungi tabelle(Mostra tabella in Access 2013 ) e trascinare Dettagli computer nella sezione superiore della visualizzazione Struttura.

  3. Trascinare i campi MACHINEID e IPAddress nella griglia di struttura della query.

  4. A questo punto è possibile aggiungere le colonne calcolate. Nella prima colonna vuota a destra digitare l'espressione PartI: Val(Left([IPAddress],(InStr(1,[IPAddress],".") -1))) nella riga Campo. L'espressione restituisce i caratteri che precedono il primo punto (.) nel campo IPAddress.

    Esaminare ora l'espressione. Poiché non si sa quante cifre costituiscono la prima parte dell'indirizzo, si usa la funzione InStr per trovare la posizione del primo punto. La sottrazione di 1 (per escludere il punto) restituisce il numero di cifre nella prima parte. Usare quindi questo numero con la funzione Left per estrarre tale numero di caratteri, a partire dal carattere più a sinistra, dal campo IPAddress. Infine, si chiama la funzione Val per convertire i caratteri restituiti dalla funzione Left in un numero. Questo ultimo passaggio è necessario perché il tipo di dati sottostante è Testo.

  5. Salvare la query facendo clic su Salva sulla barra di accesso rapido. È una buona idea farlo dopo ogni passaggio intermedio.

  6. Aggiungere la colonna per la seconda parte indirizzo. Nella colonna a destra di PartII digitare PartII: Val(Mid([IPAddress],InStr(1,[IPAddress],".") +1,InStr(InStr(1,[IPAddress],".") +1,[IPAddress],".") -InStr(1,[IPAddress],".") -1)) nella riga Campo. L'espressione restituisce i caratteri compresi tra il primo e il secondo punto nel campo IPAddress.

    Esaminare di nuovo l'espressione. Poiché non si sa quante cifre costituiscono la seconda parte dell'indirizzo o dove inizia esattamente la seconda parte, perché la prima parte non è lunga, si usa la funzione InStr per trovare le posizioni dei punti. Usare quindi la funzione Mid per estrarre i caratteri che seguono il primo punto ma precedono il secondo. Infine, chiamare la funzione Val per convertire i caratteri restituiti dalla funzione Mid in un numero. Questo ultimo passaggio è necessario perché il tipo di dati sottostante è Testo.

  7. Aggiungere la colonna per la terza parte indirizzo. Nella colonna a destra di PartII digitare PartIII: Val(Mid([IPAddress],InStr(InStr(1,[IPAddress],".") +1,[IPAddress],".") +1,InStr(InStr(1,[IPAddress],".") +1,[IPAddress],".") +1,[IPAddress],".") -InStr(InStr(1,[IPAddress],".") +1,[IPAddress],".") -1)) nella riga Campo. L'espressione restituisce i caratteri compresi tra il secondo e il terzo punto nel campo IPAddress.

    Esaminare di nuovo l'espressione. Poiché non si conosce il numero di cifre che costituiscono la terza parte dell'indirizzo o la posizione esatta in cui inizia la terza parte, in quanto non si sa per quanto tempo sono la prima e la seconda parte, usare la funzione InStr per trovare le posizioni dei punti. Usare quindi la funzione Mid per estrarre i caratteri che seguono il secondo punto ma precedono il terzo punto. Infine, chiamare la funzione Val per convertire i caratteri restituiti dalla funzione Mid in un numero. Questo ultimo passaggio è necessario perché il tipo di dati sottostante è Testo.

  8. Aggiungere la colonna per la quarta parte di indirizzo e per la parte finale dell'indirizzo. Nella colonna a destra di PartIII digitare PartIV: Val(Right([IPAddress],Len([IPAddress])-InStr(InStr(1,[IPAddress],".") +1,[IPAddress],".") +1,[IPAddress],"."))) nella riga Campo. L'espressione restituisce i caratteri che seguono l'ultimo punto.

    Esaminare di nuovo l'espressione. La chiave è trovare la posizione del terzo punto e quindi estrarre tutti i caratteri che lo seguono. Poiché non si sa esattamente dove si trova il terzo punto, si chiama tre volte la funzione InStr per trovare la posizione del terzo punto. Usare quindi la funzione Len per calcolare il numero di cifre della quarta parte. Il numero di cifre restituite viene quindi usato con la funzione Right per estrarre il numero di caratteri dalla parte destra del campo IPAddress. Infine, chiamare la funzione Val per convertire i caratteri restituiti dalla funzione Mid in un numero. Questo ultimo passaggio è necessario perché il tipo di dati sottostante è Testo.

  9. Impostare la riga Ordina di tutte e quattro le colonne calcolate su Crescente.

    Importante    La riga Ordina della colonna IPAddress deve essere lasciata vuota.

    Per ordinare in base ad altri valori dei campi, oltre agli indirizzi, inserire i campi a sinistra o a destra di tutte e quattro le colonne calcolate. Non inserire gli altri campi di ordinamento tra le colonne calcolate.

  10. Il passaggio successivo consiste nel nascondere le quattro colonne calcolate dal foglio dati. Prima di eseguire questa operazione, passare alla visualizzazione Foglio dati per vedere il risultato delle espressioni nelle colonne calcolate. La tabella seguente mostra le colonne che verranno visualizzate in visualizzazione Foglio dati.

    MachineID

    IPAddress

    PartI

    PartiI

    Partiii

    PartIV

    3

    1.198.3.93

    1

    198

    3

    93

    4

    32.183.93.40

    32

    183

    93

    40

    5

    104.30.244.2

    104

    30

    244

    2

    6

    104.244.4.1

    104

    244

    4

    1

    2

    104.244.253.29

    104

    244

    253

    29

    1

    123.4.245.23

    123

    4

    245

    23

  11. Tornare in visualizzazione Struttura e deselezionare la casella di controllo nella riga Mostra di tutte e quattro le colonne calcolate. In questo modo si evita che le colonne calcolate vengano visualizzate in visualizzazione Foglio dati.

  12. Facoltativamente, specificare i criteri per l'esclusione dei record dalla query.

  13. Passare alla visualizzazione Foglio dati per visualizzare i record in ordine. I record saranno ordinati correttamente in ordine crescente per gli indirizzi IP.

Altri usi per gli indirizzi IP ordinati

Convalidare gli indirizzi IP durante l'immissione dei dati

Se si desidera convalidare gli indirizzi senza scrivere codice, è possibile farlo in una certa misura impostando la proprietà InputMask del campo su ###.##.###.###;0;" " e la proprietà Format del campo indirizzo IP per &&&&&&&&&&&&.

A cosa fa la maschera di input? Quando si inizia a digitare nel campo dell'indirizzo, la maschera di input impedisce l'immissione di caratteri diversi dai numeri e dagli spazi tra i tre punti. Se una parte numerica è un numero a due cifre, lasciare vuota la terza cifra o digitare uno spazio. Questa maschera di input non avvisa l'utente se ignora la digitazione di una o più parti dell'indirizzo oppure digita solo spazi invece di un valore numerico. Ad esempio, "345. .3. " verrebbe accettato come indirizzo valido.

Quali sono le funzioni del formato di visualizzazione? Dopo aver digitato e lasciato il campo, il formato di visualizzazione rimuove gli spazi nell'indirizzo e visualizza solo i numeri e i punti. Quindi, se si digita "354,35 ,2 ,12", l'indirizzo viene visualizzato come "354.35.2.12". Si noti che se si fa clic all'interno dell'indirizzo o si preme F2 (per accedere alla modalità di modifica) quando l'indirizzo è selezionato, gli spazi verranno di nuovo visualizzato.

Suggerimento: Se si vuole copiare un indirizzo, passare alla colonna o al controllo precedente, premere TAB per selezionare l'indirizzo formattato e quindi fare clic su Copia. In questo modo, la stringa dell'indirizzo che contiene spazi non verrà copiata.

Ordinare i record in una maschera o in un report in base a indirizzi IP

Se è necessario creare una maschera o un report in cui i record sono ordinati per indirizzi IP, basare il nuovo oggetto su una query che ordina gli indirizzi come descritto in precedenza, invece che sulla tabella in cui sono archiviati gli indirizzi.

Inizio pagina

Serve aiuto?

Amplia le tue competenze

Esplora i corsi di formazione >

Ottieni in anticipo le nuove caratteristiche

Partecipa a Microsoft Insider >

Queste informazioni sono risultate utili?

Come valuti la qualità della lingua?
Cosa ha influito sulla tua esperienza?

Grazie per il feedback!

×