Applies ToAccess för Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

I det här avsnittet beskrivs proceduren för att sortera IP-adresser (Internet Protocol) som lagras i en Access databas.

Introduktion

Om du arbetar med IP-adresser vet du antagligen redan att det inte är lika enkelt som att arbeta med text eller tal. Det beror på att en IP-adress verkligen är en samling med fyra numeriska värden avgränsade med en punkt (.), där varje värde är ett tal mellan 0 och 255. I följande tabell visas data innan någon sorteringsordning används.

MachineID

Anställd

Läge

IPAdress

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

Sortering av IP-adresser i Access är en utmaning eftersom Access inte tillhandahåller någon särskild datatyp för lagring av IP-adresser. Även om en IP-adress bara är en samling med tal kan du inte lagra en IP-adress i ett numeriskt fält. Det beror på att ett numeriskt fält bara har stöd för ett enstaka decimaltecken (.), medan en IP-adress 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 för att 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 efter den första siffran, sedan efter den andra siffran och så vidare, i stället för efter de numeriska värden som utgör adressen. I följande tabell visas adresserna från föregående tabell sorterade i alfabetisk ordning i fältet IPAdress.

MachineID

IPAdress

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

Adresserna som börjar med 1 visas före adresserna som börjar med 2 och så vidare. I följande tabell visas adresserna i rätt stigande ordning.

MachineID

IPAdress

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 göra det enklare att förstå stegen i sorteringen av dessa adresser delar du 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, sedan efter den andra delen och så vidare. Tabellen visar varje del i en annan kolumn och eftersom kolumnerna innehåller enkla numeriska värden blir det möjligt att sortera kolumnerna från vänster till höger i stigande ordning, som visas i följande tabell.

PartI

PartII

PartIII

DelIV

1

198

3

93

32

183

93

40

104

30

244

2

104

244

4

1

104

244

253

29

123

4

245

23

Att sortera de fyra delarna separat är knepet bakom sortering av IP-adresser. I proceduren nedan skapar du en fråga som, förutom fältet IP-adress, innehåller fyra beräknade kolumner där varje kolumn lagrar en del av adressvärdena. Den första beräknade kolumnen innehåller den första numeriska delen av adressen, den andra beräknade kolumnen innehåller den andra numeriska delen av adressen och så vidare. I stället för att sortera posterna efter fältet IPAdress sorterar frågan posterna efter de fyra beräknade kolumnerna.

Skapa frågan

Du skapar en urvalsfråga med namnet Sorterade IPAddresses som visar posterna i stigande ordning på IP-adresser. Anta att den aktuella databasen har en tabell med namnet MachineDetails som innehåller ett textfält med namnet IPAdress.

  1. Klicka på Skapa > Frågedesign

  2. Välj Lägg till tabeller (Visa tabell i Access) och dra Datorinformation till den övre delen av designvyn.

  3. Dra fälten MachineID och IPAddress till frågerutnätet.

  4. Nu kan du lägga till de beräknade kolumnerna. I den första tomma kolumnen till höger skriver du uttrycket PartI: Val(Left([IPAddress],(InStr(1,[IPAddress],".") -1))) på raden Fält . Uttrycket returnerar tecknen före den första punkten (.) i fältet IPAdress.

    Granska uttrycket nu. Eftersom du inte vet hur många siffror som utgör den första delen av adressen använder du funktionen SökStr för att hitta positionen för den första punkten. Om du subtraherar 1 (för att utesluta perioden) returneras antalet siffror i den första delen. Du använder sedan det här talet med funktionen Vänster för att extrahera så många tecken, med början från tecknet längst till vänster, från fältet IPAdress. Slutligen anropar du funktionen 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. Det är en bra idé att göra detta efter varje mellanliggande steg.

  6. Lägg till kolumnen för den andra adressdelen. I kolumnen till höger om PartI skriver du PartII: Val(Mid([IPAddress],InStr(1,[IPAddress],".") +1,SökStr(SökStr(1;[IPAdress],".") +1,[IPAdress],".") -SökSträng(1;[IPAdress];".") -1)) på raden Fält . Uttrycket returnerar de tecken som finns mellan den första och andra perioden i fältet IPAdress.

    Granska uttrycket igen. Eftersom du inte vet hur många siffror som utgör den andra delen av adressen eller exakt var den andra delen börjar (eftersom du inte vet hur lång den första delen är) använder du funktionen SökStr för att hitta periodernas positioner. Sedan använder du funktionen Mitt för att extrahera tecknen som följer efter den första punkten men som föregår den andra perioden. Slutligen anropar du funktionen Val för att konvertera de tecken som returneras av funktionen Mitt 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 PartII skriver du PartIII: Val(Mid([IPAddress],InStr(InStr(1,[IPAddress],".") +1,[IPAdress],".") +1,SökStr(SökStr(1;[IPAdress];".") +1,[IPAdress],".") +1,[IPAdress],".") -SökSträng(SökStr(1;[IPAdress];".") +1,[IPAdress],".") -1)) på raden Fält . Uttrycket returnerar de tecken som finns mellan den andra och tredje perioden i fältet IPAdress.

    Granska uttrycket igen. Eftersom du inte vet hur många siffror som utgör den tredje delen av adressen eller exakt var den tredje delen börjar (eftersom du inte vet hur länge den första och andra delen är), använder du funktionen SökStr för att hitta periodernas positioner. Sedan använder du funktionen Mitt för att extrahera tecknen efter den andra perioden men före den tredje perioden. Slutligen anropar du funktionen Val för att konvertera de tecken som returneras av funktionen Mitt till ett tal. Det sista steget är nödvändigt 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 PartIII skriver du PartIV: Val(Right([IPAddress],Len([IPAddress])-InStr(InStr(InStr(1,[IPAdress],".") +1,[IPAdress],".") +1,[IPAdress],"."))) på raden Fält . Uttrycket returnerar de tecken som följer efter den sista punkten.

    Granska uttrycket igen. Nyckeln är att hitta platsen för den tredje punkten och sedan extrahera alla tecken som följer efter den. Eftersom du inte vet exakt var den tredje perioden finns anropar du funktionen SökSträng tre gånger för att hitta positionen för den tredje perioden. Sedan använder du funktionen Längd för att beräkna antalet siffror i den fjärde delen. Antalet siffror som returneras används sedan med funktionen Höger för att extrahera så många tecken från den högra delen av fältet IPAdress. Slutligen anropar du funktionen Val för att konvertera de tecken som returneras av funktionen Mitt till ett tal. Det sista steget är nödvändigt eftersom den underliggande datatypen är Text.

  9. Ställ in raden Sortera för alla fyra beräknade kolumner till Stigande.

    Viktigt    Raden Sortera i kolumnen IPAdress måste lämnas tom.

    Om du vill sortera efter andra fältvärden placerar du förutom adresserna fälten till vänster eller höger om alla fyra beräknade kolumner. Placera inte de andra sorteringsfälten mellan de beräknade kolumnerna.

  10. Nästa steg är att dölja de fyra beräknade kolumnerna från databladet. Innan du gör det växlar du till databladsvyn för att se resultatet av uttrycken i de beräknade kolumnerna. I följande tabell visas de kolumner som du kommer att se i databladsvyn.

    MachineID

    IPAdress

    PartI

    PartII

    PartIII

    DelIV

    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. Växla tillbaka till designvyn och avmarkera kryssrutan på raden Visa för alla fyra beräknade kolumner. Det förhindrar att beräknade kolumner visas i databladsvyn.

  12. Alternativt kan du ange villkor för att utesluta poster från frågan.

  13. Växla till databladsvyn för att se posterna i sorterad ordning. Posterna sorteras korrekt i stigande ordning på IP-adresserna.

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

Verifiera IP-adresser under datainmatning

Om du vill verifiera adresser utan att skriva kod kan du göra det i begränsad utsträckning genom att ange egenskapen InputMask för fältet till ###.#.#.#.###; 0;" " och egenskapen Format för fältet IP-adress som ska&&&&&&&&&&&&.

Vad gör indatamasken? När du börjar skriva i adressfältet hindrar indatamasken dig från att ange andra tecken än siffror och blanksteg mellan de tre perioderna. Om en numerisk del är ett tvåsiffrigt nummer lämnar du den tredje siffran tom eller skriver ett blanksteg i stället. Observera att den här indatamasken inte varnar användaren om han hoppar över att skriva en eller flera delar av adressen, eller skriver endast blanksteg i stället för ett numeriskt värde. Till exempel "345. .3. " skulle accepteras som en giltig adress.

Vad gör visningsformatet? När du har skrivit klart och lämnat fältet tar visningsformatet bort blankstegen i adressen och visar bara tal och punkter. Om du skriver "354.35 .2 .12" visas adressen som "354.35.2.12". Observera att om du klickar i adressen eller trycker på F2 (för att öppna redigeringsläge) när adressen är markerad visas blankstegen igen.

Tips: Om du vill kopiera en adress går du till föregående kolumn eller kontroll, trycker på TABB för att markera den formaterade adressen och klickar sedan på Kopiera. Genom att göra det kopierar du inte adresssträngen som innehåller blanksteg.

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

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

Överst på sidan

Behöver du mer hjälp?

Vill du ha fler alternativ?

Utforska prenumerationsförmåner, bläddra bland utbildningskurser, lär dig hur du skyddar din enhet med mera.

Communities hjälper dig att ställa och svara på frågor, ge feedback och få råd från experter med rika kunskaper.