Sortera IP-adresser

Viktigt!: Den här artikeln är maskinöversatt, se ansvarsfriskrivningen. Den engelska versionen av den här artikeln finns här för din referens.

I det här avsnittet beskrivs hur du sorterar IP-adresser (Internet Protocol) som lagras i en Microsoft Office Access 2007-databas.

Artikelinnehåll

Introduktion

Skapa fråga

Fler användningsområden för sorterade IP-adresser

Inledning

Om du arbetar med IP-adresser vet du förmodligen redan att de inte är riktigt lika enkla att arbeta med som text och tal. Det beror på att IP-adresser i själva verket är en mängd med fyra numeriska värden avgränsade med (.), där varje värde är ett tal mellan 0 och 255. I tabellen nedan visas data före en sortering.

Dator-ID

Anställd

Plats

IP-adress

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


Att sortera IP-adresser i Access är en utmaning eftersom det inte finns någon speciell datatyp som IP-adresser kan lagras med. Även om en IP-adress bara är en mängd med tal, kan du inte lagra en IP-adress i ett numeriskt fält. Det beror på att ett numeriskt fält bara kan innehålla en punkt, medan IP-adresser innehåller tre punkter. Det innebär att du måste lagra adresserna i ett textfält.

Eftersom du lagrar IP-adresser i ett textfält kan du inte använda de inbyggda sorteringsknapparna i Access om du vill sortera adresserna på ett meningsfullt sätt. Sorteringsknapparna sorterar alltid värden i ett textfält i alfabetisk ordning, även om tecknen är tal. Med andra ord sorteras adresserna först efter den första siffran, därefter den andra siffran och så vidare, i stället för efter de numeriska värdena som utgör adressen. I tabellen nedan visas adresserna från tabellen ovan, nu sorterade i alfabetisk ordning i fältet IP-adress.

Dator-ID

IP-adress

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


De adresser som inleds med 1 visas före de adresser som inleds med 2 och så vidare. I tabellen nedan visas adresserna i rätt stigande ordning.

Dator-ID

IP-adress

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


För att det ska bli enklare att förstå vilka steg som ingår i sorteringen av dessa adresser, ska du bryta upp IP-adresserna i fyra numeriska delar. Adresserna måste sorteras efter den första delen, sedan för varje värde i den första delen, därefter efter den andra delen och så vidare. I tabellen nedan visas varje del i en egen kolumn och, eftersom kolumnerna bara innehåller enkla numeriska värden, blir det möjligt att sortera kolumnerna från vänster till höger i stigande ordning, vilket visas i tabellen nedan.

Del1

Del2

Del3

Del4

1

198

3

93

32

183

93

40

104

30

244

2

104

244

4

1

104

244

253

29 för företagsresurs

123

4

245

23


Knepet bakom att sortera IP-adresser är att sortera de fyra delarna separat. I nästa procedur skapar du en fråga som, förutom fältet IP-adress, innehåller fyra beräknade kolumner som lagrar varsin del av dessa adressvärden. Den första beräknade kolumnen innehåller den första numeriska delen i adressen, den andra beräknade kolumnen innehåller den andra numeriska delen och så vidare. I stället för att sortera posterna efter fältet IP-adress sorterar frågan posterna efter de fyra beräknade kolumnerna.

Överst på sidan

Skapa frågan

Du ska nu skapa en urvalsfråga med namnet Sorterade IP-adresser som visar posterna i stigande ordning. Anta att den aktuella databasen innehåller en tabell med namnet Datorinformation som innehåller ett textfält med namnet IP-adress.

  1. Klicka på Frågedesign i gruppen Rapporter på fliken Skapa.

  2. Klicka på Datorinformation på fliken Tabeller i dialogrutan Visa tabell och sedan på Lägg till. Stäng dialogrutan.

  3. Dra fälten Dator-ID och IP-adress till frågerutnätet.

  4. Du är nu klar att lägga till de beräknade kolumnerna. I den första tomma kolumnen till höger skriver du uttrycket Del1: Val(Left([IP-adress];(InStr(1;[IP-adress];".")-1))) på raden Fält. Uttrycket returnerar tecknen före den första punkten (.) i fältet IP-adress.

    Nu kan granska uttrycket. Eftersom du inte vet hur många siffror som tillsammans bildar den första delen av adressen kan du använda den funktionen InStr att hitta positionen för den första perioden. Sedan subtraheras 1 (om du vill utesluta perioden) returnerar antalet siffror i den första delen. Sedan kan du använda det här numret med de vänster -funktionen för att extrahera så många tecken, med början från tecknet till vänster från fältet IP-adress. Slutligen kan du ringa det Val för att konvertera de tecken som returneras av funktionen vänster till ett tal. Det sista steget är nödvändigt eftersom den underliggande datatypen är Text.

  5. Spara frågan genom att klicka på Spara i verktygsfältet Snabbåtkomst. Detta bör du göra efter varje mellanliggande steg.

  6. Lägg till kolumnen för den andra adressdelen. I kolumnen till höger om Del1 skriver du Del2: Val(Mid([IP-adress];InStr(1;[IP-adress];".")+1;InStr(InStr(1;[IP-adress];".")+1;[IP-adress];".")-InStr(1;[IP-adress];".")-1)) på raden Fält. Uttrycket returnerar tecknen som finns mellan den första och andra punkten i fältet IP-adress.

    Granska uttrycket. Eftersom du inte vet hur många siffror som tillsammans bildar den andra delen av adressen eller exakt där den andra delen startar (eftersom du inte hur länge den första delen är) kan använda du funktionen InStr för att hitta placeringarna av perioderna. Du använder den funktionen Mid extrahera de tecken som följer den första period men före den andra perioden. Slutligen kan ringa du funktionen Val om du vill konvertera de tecken som returneras av funktionen Mid till ett tal. Det sista steget är nödvändigt eftersom den underliggande datatypen är Text.

  7. Lägg till kolumnen för den tredje adressdelen. I kolumnen till höger om Del2 skriver du Del3: Val(Mid([IP-adress];InStr(InStr(1;[IP-adress];".")+1;[IP-adress];".")+1;InStr(InStr(InStr(1;[IP-adress];".")+1;[IP-adress];".")+1;[IP-adress];".")-InStr(InStr(1;[IP-adress];".")+1;[IP-adress];".")-1)) på raden Fält. Uttrycket returnerar de tecken som finns mellan den andra och den tredje punkten i fältet IP-adress.

    Granska uttrycket igen. Eftersom du inte känner till hur många siffror som utgör den andra delen av adressen eller exakt var den tredje delen börjar (eftersom du inte vet hur lång den första och andra delen är) använder du funktionen InStr för att hitta punkternas positioner. Använd sedan funktionen Mid för att hämta tecknen efter den andra punkten men före den tredje punkten. Till sist ska du anropa funktionen Val för att konvertera de tecken som returneras av funktionen Mid till ett tal. Detta sista steg behövs eftersom den underliggande datatypen är Text.

  8. Lägg till kolumnen för den fjärde och sista adressdelen. I kolumnen till höger om Del3 skriver du Del4: Val(Right([IP-adress];Len([IP-adress])-InStr(InStr(InStr(1;[IP-adress];".")+1;[IP-adress];".")+1;[IP-adress];"."))) på raden Fält. Uttrycket returnerar tecknen efter den sista punkten.

    Granska uttrycket. Viktiga är att hitta platsen för den tredje perioden och extrahera alla tecken som följer den. Eftersom du inte vet exakt var tredje period finns kan ringa du funktionen InStr tre gånger för att hitta positionen för den tredje perioden. Du använder den funktionen längd för att beräkna antalet siffror i den fjärde delen. Antalet siffror som returneras som sedan används med den höger funktionen för att extrahera detta antal tecken från den högra delen av fältet IP-adress. Slutligen kan ringa du funktionen Val om du vill konvertera de tecken som returneras av funktionen Mid till ett tal. Det sista steget är nödvändigt eftersom den underliggande datatypen är Text.

  9. Ange raden Sortera för alla fyra beräknade kolumner till Stigande.

    Viktigt!    Raden Sortera för kolumnen IP-adress måste vara tom.

    Om du vill sortera efter andra fältvärden, förutom adresserna, placerar du fälten antingen till vänster eller till höger om alla fyra beräknade kolumner. Du ska inte placera några andra sorteringsfält mellan de beräknade kolumnerna.

  10. Nästa steg är att dölja de fyra beräknade kolumnerna i databladet. Men innan du gör det, växlar du till databladsvyn för att kontrollera resultatet av uttrycken i de beräknade kolumnerna. I tabellen nedan visas kolumnerna som du ser i databladsvyn.

Dator-ID

IP-adress

Del1

Del2

Del3

Del4

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 för företagsresurs

1

123.4.245.23

123

4

245

23

  1. Växla tillbaka till designvyn och avmarkera kryssrutan på raden Visa för alla fyra beräknade kolumner. Då visas inte de beräknade kolumnerna i databladsvyn.

  2. Du kan också ange villkor om du vill utelämna poster från frågan.

  3. Växla till databladsvyn för att visa posterna i sorterad ordning. Nu visas IP-adresserna rätt sorterade i stigande ordning.

Överst på sidan

Fler användningsområden för sorterade IP-adresser

Verifiera IP-adresser vid datainmatning

Om du vill bekräfta adresser utan att skriva kod kan du göra det till en begränsad omfattning genom att ställa in egenskapen Indatamask för fältet i #. ###. ###. ###; 0; " " och egenskapen Format för fältet IP-adress till & & & & & & & & & & & &.

Vad gör indatamasken? När du börjar skriva i adressfältet hindrar indatamasken dig från att skriva andra tecken än tal och blanksteg mellan de tre punkterna. Om en numerisk del är ett dubbelsiffrigt tal, lämnas den tredje siffran tom eller så skrivs ett blanksteg i stället. Observera att denna indatamask inte varnar användaren om han eller hon hoppar över en eller flera delar i adressen, eller bara skriver blanksteg i stället för ett numeriskt värde. Exempelvis "345. .3. " godkänns som en giltig adress.

Vad gör visningsformatet? När du slutar att skriva och lämnar fältet tar visningsformatet bort blankstegen i adressen och visar bara talen och punkterna. Om du skriver "354.35 .2 .12 " visas adressen därför som "354.35.2.12". Observera att om du klickar inuti adressen eller trycker på F2 (för att aktivera redigeringsläget) när adressen är markerad, visas blankstegen igen.

Tips: Om du vill kopiera en adress flyttar du till föregående kolumn eller kontroll, trycker på TABB för att markera de formaterade adresserna och klickar på Kopiera. Om du gör så här kopieras inte adressträngen som innehåller blanksteg.

Sortera poster i ett formulär eller en rapport efter IP-adress

Om du behöver skapa ett formulär eller en rapport där posterna sorteras efter IP-adresserna, baserar du det nya objektet på en fråga som sorterar adresserna på det sätt som beskrivs ovan i stället för på tabellen där adresserna lagras.

Överst på sidan

Obs!: Ansvarsfriskrivning för maskinöversättning: Den här artikeln har översatts av ett datorsystem utan mänsklig inblandning. Microsoft erbjuder dessa maskinöversättningar för att hjälpa icke engelskspråkiga användare att ta del av information om Microsofts produkter, tjänster och tekniker. Eftersom artikeln är maskinöversatt kan den innehålla fel i ordval, syntax och grammatik.

Utöka dina kunskaper
Utforska utbildning
Få nya funktioner först
Anslut till Office Insiders

Hade du nytta av den här informationen?

Tack för din feedback!

Tack för din feedback! Det låter som att det kan vara bra att koppla dig till en av våra Office-supportrepresentanter.

×