Sortere IP-adresser

Viktig: Denne artikkelen er maskinoversatt, se ansvarsfraskrivelsen. Du finner den engelske versjonen av artikkelen her som referanse.

Dette emnet beskriver fremgangsmåten for å sortere IP-adresser (Internett-protokoll) som er lagret i en Microsoft Office Access 2007-database.

I denne artikkelen

Innføring

Opprette spørringen

Flere bruksområder for sorterte IP-adresser

Innføring

Hvis du arbeider med IP-adresser, vet du sannsynligvis at det ikke er like enkelt som å arbeide med tekst eller tall. Det er fordi en IP-adresse er en samling av fire numeriske verdier atskilt med punktum (.), der hver verdi er et tall mellom 0 og 255. Følgende tabell viser data før de er sortert.

Maskin-ID

Ansatt

Plassering

IP-adresse

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 er en utfordring fordi det ikke finnes en spesiell datatype for lagring av IP-adresser i Access. Selv om en IP-adresse bare er en samling tall, kan du ikke lagre IP-adresser i et numerisk felt. Det er fordi numeriske felt bare støtter ett desimaltegn (for eksempel , eller . avhengig av operativsystemet), mens IP-adresser inneholder tre punktum (.). Det betyr at du må lagre adressene i tekstfelt.

Fordi du lagrer IP-adresser i tekstfelt, kan du ikke bruke de innebygde sorteringsknappene i Access til å sortere adressene på en meningsfylt måte. Sorteringsknappene sorterer alltid verdier i et tekstfelt i alfabetisk rekkefølge, selv om tegnene er tall. Adressene blir med andre ord sortert etter første siffer, så etter andre siffer og så videre, i stedet for etter de numeriske verdiene som utgjør adressene. Følgende tabell viser adressene fra den forrige tabellen sortert i alfabetisk rekkefølge etter feltet IP-adresse.

Maskin-ID

IP-adresse

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


Adresser som begynner med 1, vises før adresser som begynner med 2 og så videre. Følgende tabell viser adressene i riktig stigende rekkefølge.

Maskin-ID

IP-adresse

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


Det er enklere å forstå hvordan adressene sorteres hvis du deler opp IP-adressene i fire numeriske deler. Adressene må sorteres etter den første delen, deretter etter hver verdi i den første delen, så etter den andre delen og så videre. Tabellen viser hver del i en separat kolonne, og fordi kolonnene inneholder enkle numeriske verdier, er det mulig å sortere kolonnene fra venstre mot høyre i stigende rekkefølge, slik som vist i følgende tabell.

DelI

DelII

DelIII

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


Hemmeligheten ved sortering av IP-adresser er å sortere de fire delene hver for seg. I prosedyren som følger skal du opprette en spørring som inneholder fire beregnede kolonner, i tillegg til feltet IP-adresse, der hver kolonne lagrer en del av adresseverdiene. Den første beregnede kolonnen vil inneholde den første numeriske delen av adressen, den andre beregnede kolonnen vil inneholde den andre numeriske delen av adressen og så videre. I stedet for å sortere postene etter feltet IP-adresse, vil spørringen sortere postene etter de fire beregnede kolonnene.

Til toppen av siden

Opprette spørringen

Du skal opprette en utvalgsspørring med navnet Sorterte IP-adresser som viser postene i stigende rekkefølge etter IP-adresse. Anta at den gjeldende databasen inneholder en tabell med navnet Maskindetaljer som inkluderer tekstfeltet IP-adresse.

  1. Velg kategorien Opprett, gruppen Annet, og klikk Spørringsutforming.

  2. I kategorien Tabeller i dialogboksen Vis tabell klikker du Maskindetaljer og deretter Legg til. Lukk dialogboksen.

  3. Dra feltene Maskin-ID og IP-adresse til spørringsrutenettet.

  4. Nå kan du legge til de beregnede kolonnene. I den første tomme kolonnen på høyre side skriver du inn uttrykket DelI: Val(Left([IP-adresse],(InStr(1,[IP-adresse],".")-1))) i Felt-raden. Uttrykket returnerer tegnene foran det første punktumet (.) i feltet IP-adresse.

    Se gjennom uttrykket. Ettersom du ikke vet hvor mange sifre som utgjør den første delen av adressen, kan du bruke den InStr -funksjonen til å finne posisjonen til den første perioden. Trekker verdien 1 (Hvis du vil utelate perioden) returnerer antallet sifre i den første delen. Deretter bruker du dette tallet med den Left -funksjonen til å trekke ut tilsvarende antall tegn, og starter fra tegnet lengst til venstre, fra feltet IP-adresse. Til slutt du ringer til Val -funksjonen til å konvertere tegnene som returneres av Left -funksjonen til et tall. Det siste trinnet er nødvendig fordi den underliggende datatypen er tekst.

  5. Lagre spørringen ved å klikke Lagre på verktøylinjen for hurtigtilgang . Det er lurt å gjøre det etter hvert trinn.

  6. Legg til kolonnen for den andre adressedelen. I kolonnen til høyre for DelI, skriver du inn DelII: Val(Mid([IP-adresse],InStr(1,[IP-adresse],".")+1,InStr(InStr(1,[IP-adresse],".")+1,[IP-adresse],".")-InStr(1,[IP-adresse],".")-1)) i Felt-raden. Uttrykket returnerer tegnene mellom første og andre punktum i feltet IP-adresse.

    Se gjennom uttrykket. Fordi du ikke vet hvor mange sifre som utgjør den andre delen av adressen eller nøyaktig hvor den andre delen starter (fordi du ikke hvor lenge den første delen er), kan du bruke InStr -funksjonen til å finne plasseringene til periodene. Deretter bruker du den Mid -funksjonen til å trekke ut tegnene som kommer etter den første periode men før den andre. Til slutt kan du kalle Val -funksjonen hvis du vil konvertere tegnene som returneres av Mid -funksjonen til et tall. Det siste trinnet er nødvendig fordi den underliggende datatypen er tekst.

  7. Legg til kolonnen for den tredje adressedelen. I kolonnen til høyre for DelII, skriver du inn DelIII: Val(Mid([IP-adresse],InStr(InStr(1,[IP-adresse],".")+1,[IP-adresse],".")+1,InStr(InStr(InStr(1,[IP-adresse],".")+1,[IP-adresse],".")+1,[IP-adresse],".")-InStr(InStr(1,[IP-adresse],".")+1,[IP-adresse],".")-1)) i Felt-raden. Uttrykket returnerer tegnene mellom andre og tredje punktum i feltet IP-adresse.

    Se gjennom uttrykket. Fordi du ikke vet hvor mange sifre den tredje delen av adressen inneholder, eller nøyaktig hvor den tredje delen starter (fordi du ikke vet hvor lang den første og andre delen er), bruker du InStr-funksjonen til å finne plasseringene til punktumene. Deretter bruker du Mid-funksjonen til å trekke ut tegnene som kommer etter det andre punktumet, men før det tredje. Til slutt kaller du Val-funksjonen for å konvertere tegnene som returneres av Mid-funksjonen, til et tall. Det siste trinnet er nødvendig fordi den underliggende datatypen er Tekst.

  8. Legg til kolonnen for den fjerde og siste adressedelen. I kolonnen til høyre for DelIII, skriver du inn DelIV: Val(Right([IP-adresse],Len([IP-adresse])-InStr(InStr(InStr(1,[IP-adresse],".")+1,[IP-adresse],".")+1,[IP-adresse],"."))) i Felt-raden. Uttrykket returnerer tegnene etter det siste punktumet.

    Se gjennom uttrykket. Nøkkelen, er å finne plasseringen til den tredje perioden og Pakk ut alle tegnene som kommer etter den. Fordi du ikke vet nøyaktig hvor den tredje perioden er plassert, kaller InStr -funksjonen tre ganger for å finne posisjonen til den tredje perioden. Deretter bruker du den lengde -funksjonen til å beregne antall sifre i den fjerde delen. Antall sifre som returneres brukes deretter med de høyre -funksjonen til å trekke ut tilsvarende antall tegn fra høyre del av feltet IP-adresse. Til slutt kan du kalle Val -funksjonen hvis du vil konvertere tegnene som returneres av Mid -funksjonen til et tall. Det siste trinnet er nødvendig fordi den underliggende datatypen er tekst.

  9. Sett Sorter-raden for alle fire beregnede koloner til Stigende.

    Viktig!    Sorter-raden i kolonnen IP-adresse må være tom.

    Hvis du vil sortere etter andre feltverdier i tillegg til adressene, plasserer du feltene enten til venstre eller høyre for alle de fire beregnede kolonnene. Ikke plasser andre sorteringsfelt mellom de beregnede kolonnene.

  10. Det neste trinnet er å skjule de fire beregnede kolonnene i dataarket. Før du gjør det, må du bytte til dataarkvisning for å se resultatene av uttrykkene i de beregnede kolonnene. Følgende tabell viser kolonnene du vil se i dataarkvisning.

Maskin-ID

IP-adresse

DelI

DelII

DelIII

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

  1. Bytt tilbake til utformingsvisning, og fjern merket i avmerkingsboksen i Vis-raden for alle de fire beregnede kolonnene. Da unngår du at de beregnede kolonnene vises i dataarkvisning.

  2. Angi eventuelt vilkår for å utelate poster fra spørringen.

  3. Bytt til dataarkvisning for å se postene i sortert rekkefølge. Postene er nå sortert riktig, i stigende rekkefølge etter IP-adresse.

Til toppen av siden

Flere bruksområder for sorterte IP-adresser

Validere IP-adresser under dataregistrering

Hvis du vil validere adresser uten å skrive kode, kan du gjøre dette til en viss grad ved hjelp av egenskapen inndatamaske for feltet til #. ###. ###. ###; 0; " " og Format -egenskapen for feltet IP-adressen til & & & & & & & & & & & &.

Hva gjør en inndatamaske? Når du begynner å skrive i adressefeltet, forhindrer inndatamasken at du skriver andre tegn enn tall og mellomrom mellom de tre punktumene. Hvis en numerisk del er et tosifret tall, lar du det tredje sifferet være tomt eller skriver inn et mellomrom. Vær oppmerksom på at denne inndatamasken ikke advarer brukeren hvis vedkommende hopper over én eller flere deler i adressen eller skriver inn bare mellomrom i stedet for en numerisk verdi. "345. .3. " blir for eksempel akseptert som en gyldig adresse.

Hva gjør visningsformatet? Når du er ferdig med å skrive inn data og flytter ut av feltet, fjerner visningsformatet mellomrommene i adressen og viser bare tallene og punktumene. Hvis du skriver inn "354.35 .2 .12 ", vises adressen som "354.35.2.12". Legg merke til at mellomrommene vises når du klikker i adressen eller trykker F2 (for å gå til redigeringsmodus), når adressen er merket.

Tips!: Hvis du vil kopiere en adresse, flytter du til forrige kolonne eller kontroll, trykker TAB for å merke den formaterte adressen, og klikker Kopier. Adressestrengen som inneholder mellomrom, blir ikke kopiert når du gjør dette.

Sortere poster i et skjema eller en rapport etter IP-adresser

Hvis du må opprette et skjema eller en rapport som inneholder poster sortert etter IP-adresse, må du basere det nye objektet på en spørring som sorterer adressene slik som beskrevet ovenfor, i stedet for på tabellen som lagrer adressene.

Til toppen av siden

Merknad: Ansvarsfraskrivelse for maskinoversettelse: Denne artikkelen er oversatt av et datasystem i stedet for en oversetter. Microsoft tilbyr disse maskinoversettelsene slik at brukere som ikke snakker engelsk, får tilgang til innhold om Microsoft-produkter, -tjenester og –teknologier. Ettersom artikkelen er maskinoversatt, kan den inneholde feil i vokabular, syntaks eller grammatikk.

Utvid ferdighetene dine
Utforsk opplæring
Vær først ute med de nye funksjonene
Bli med i Office Insiders

Var denne informasjonen nyttig?

Takk for tilbakemeldingen!

Takk for tilbakemeldingen! Det høres ut som det kan være lurt å sette deg i kontakt med én av våre Office-kundestøtteagenter.

×