Applies ToAccess for Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Dette emnet beskriver fremgangsmåten for sortering av IP-adresser (Internet Protocol) som er lagret i en Access-database.

Innføring

Hvis du arbeider med IP-adresser, vet du sannsynligvis allerede at det ikke er like enkelt som å arbeide med tekst eller tall. Dette er fordi en IP-adresse egentlig er en samling av fire numeriske verdier atskilt med et punktum (.), der hver verdi er et tall mellom 0 og 255. Tabellen nedenfor viser data før en sorteringsrekkefølge brukes.

MachineID

Arbeidstaker

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

Fordi du lagrer IP-adresser i et tekstfelt, kan du ikke bruke de innebygde sorteringsknappene i Access til å sortere adressene på en meningsfull måte. Sorteringsknappene sorterer alltid verdier i et tekstfelt i alfabetisk rekkefølge, selv om tegnene er tall. Adressene sorteres med andre ord etter det første sifferet, deretter etter det andre sifferet og så videre, i stedet for de numeriske verdiene som utgjør adressen. Tabellen nedenfor viser adressene fra den forrige tabellen sortert i alfabetisk rekkefølge i IPAddress-feltet.

MachineID

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

Adressene som begynner med 1, vises før adressene som begynner med 2 og så videre. Tabellen nedenfor viser adressene i riktig stigende rekkefølge.

MachineID

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

Hvis du vil gjøre det enklere å forstå trinnene som er involvert i sortering av disse adressene, deler du IP-adressene inn i fire numeriske deler. Adressene må sorteres etter den første delen, deretter for hver verdi i den første delen, deretter etter den andre delen og så videre. Tabellen viser hver del i en annen kolonne, og fordi kolonnene inneholder enkle numeriske verdier, blir det mulig å sortere kolonnene fra venstre mot høyre i stigende rekkefølge, som vist i tabellen nedenfor.

DelI

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

Sortering av de fire delene separat er trikset bak sortering av IP-adresser. I fremgangsmåten nedenfor oppretter du en spørring som, i tillegg til IP-adressefeltet, inneholder fire beregnede kolonner 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 IPAddress-feltet, sorterer spørringen postene etter de fire beregnede kolonnene.

Opprette spørringen

Du oppretter en utvalgsspørring kalt Sorterte IPAddresses som viser postene i stigende rekkefølge av IP-adresser. Anta at gjeldende database har en tabell kalt MachineDetails som inneholder et tekstfelt kalt IPAddress.

  1. Klikk Opprett > spørringsutforming

  2. Velg Legg til tabeller (Vis tabell i Access), og dra Maskindetaljer til den øvre delen av utformingsvisning.

  3. Dra feltene MachineID og IPAddress til utformingsrutenettet for spørringen.

  4. Du er nå klar til å legge til de beregnede kolonnene. I den første tomme kolonnen til høyre skriver du inn uttrykket PartI: Val(Left([IPAddress],(InStr(1,[IPAddress],".") -1))) i Felt-raden. Uttrykket returnerer tegnene foran den første perioden (.) i IPAddress-feltet.

    Se gjennom uttrykket. Fordi du ikke vet hvor mange sifre som utgjør den første delen av adressen, bruker du InStr-funksjonen til å finne posisjonen til den første perioden. Å trekke fra 1 (for å utelate perioden) returnerer antall sifre i den første delen. Deretter bruker du dette tallet med Venstre-funksjonen til å trekke ut så mange tegn som starter fra tegnet lengst til venstre, fra IPAddress-feltet. Til slutt kaller du Val-funksjonen for å konvertere tegnene som returneres av Venstre-funksjonen , til et tall. Dette siste trinnet er nødvendig fordi den underliggende datatypen er Tekst.

  5. Lagre spørringen ved å klikke Lagreverktøylinjen for hurtigtilgang. Det er lurt å gjøre dette etter hvert mellomtrinn.

  6. Legg til kolonnen for den andre adressedelen. I kolonnen til høyre for PartI skriver du inn PartII: Val(Mid([IPAddress],InStr(1,[IPAddress],".") +1,InStr(InStr(1,[IPAddress],".") +1,[IPAddress],".") -InStr(1,[IPAddress],".") -1)) i Felt-raden. Uttrykket returnerer tegnene som er plassert mellom første og andre periode i IPAddress-feltet.

    Se gjennom uttrykket på nytt. 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 vet hvor lenge den første delen er), bruker du InStr-funksjonen til å finne posisjonene til periodene. Deretter bruker du Mid-funksjonen til å trekke ut tegnene som følger den første perioden, men foran den andre perioden. Til slutt kaller du Val-funksjonen for å konvertere tegnene som returneres av Mid-funksjonen , til et tall. Dette 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 PartII skriver du inn PartIII: Val(Mid([IPAddress],InStr(InStr(1,[IPAddress],".") +1,[IPAddress],".") +1,InStr(InStr(InStr(1,[IPAddress],".") +1,[IPAddress],".") +1,[IPAddress],".") -InStr(InStr(1,[IPAddress],".") +1,[IPAddress],".") -1)) i Felt-raden. Uttrykket returnerer tegnene som er plassert mellom andre og tredje periode i IPAddress-feltet.

    Se gjennom uttrykket på nytt. Fordi du ikke vet hvor mange sifre som utgjør den tredje delen av adressen eller nøyaktig hvor den tredje delen starter (fordi du ikke vet hvor lenge den første og andre delen er), bruker du InStr-funksjonen til å finne posisjonene til periodene. Deretter bruker du Mid-funksjonen til å trekke ut tegnene som følger den andre perioden, men før den tredje perioden. Til slutt kaller du Val-funksjonen for å konvertere tegnene som returneres av Mid-funksjonen , til et tall. Dette 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 PartIII skriver du inn PartIV: Val(Right([IPAddress],Len([IPAddress])-InStr(InStr(InStr(1,[IPAddress],".") +1,[IPAddress],".") +1,[IPAddress],"."))) i Felt-raden . Uttrykket returnerer tegnene som følger den siste perioden.

    Se gjennom uttrykket på nytt. Nøkkelen er å finne plasseringen av den tredje perioden og deretter trekke ut alle tegnene som følger den. Fordi du ikke vet nøyaktig hvor den tredje perioden er plassert, kaller du InStr-funksjonen tre ganger for å finne posisjonen til den tredje perioden. Deretter bruker du Len-funksjonen til å beregne antall sifre i den fjerde delen. Antallet sifre som returneres, brukes deretter med Høyre-funksjonen til å trekke ut så mange tegn fra høyre del av IPAddress-feltet. Til slutt kaller du Val-funksjonen for å konvertere tegnene som returneres av Mid-funksjonen , til et tall. Dette siste trinnet er nødvendig fordi den underliggende datatypen er Tekst.

  9. Angi Sorter-raden for alle de fire beregnede kolonnene til Stigende.

    Viktig    Sorteringsraden i IPAddress-kolonnen må stå tom.

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

  10. Det neste trinnet er å skjule de fire beregnede kolonnene fra dataarket. Men før du gjør dette, bytter du til dataarkvisning for å se resultatet av uttrykkene i de beregnede kolonnene. Tabellen nedenfor viser kolonnene du ser i dataarkvisning.

    MachineID

    IP-adresse

    DelI

    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. Bytt tilbake til utformingsvisning, og fjern merket i avmerkingsboksen i Vis-raden i alle de fire beregnede kolonnene. Dette hindrer at de beregnede kolonnene vises i dataarkvisning.

  12. Du kan eventuelt angi vilkår for å utelate poster fra spørringen.

  13. Bytt til dataarkvisning for å se postene i sortert rekkefølge. Du vil se postene riktig sortert i stigende rekkefølge av IP-adressene.

Flere bruksområder for sorterte IP-adresser

Validere IP-adresser under dataregistrering

Hvis du vil validere adresser uten å skrive kode, kan du i begrenset grad gjøre dette ved å angi inndatamaskeegenskapen for feltet til ###.##.##.###; 0;" " og formategenskapen for IP-adressefeltet som skal&&&&&&&&&&&&.

Hva gjør inndatamasken? Når du begynner å skrive i adressefeltet, hindrer inndatamasken deg i å skrive inn andre tegn enn tall og mellomrom mellom de tre periodene. Hvis en numerisk del er et tosifret tall, lar du det tredje sifferet stå tomt eller skriver inn et mellomrom i stedet. Vær oppmerksom på at denne inndatamasken ikke advarer brukeren hvis han hopper over å skrive inn én eller flere deler av adressen, eller skriver bare inn mellomrom i stedet for en numerisk verdi. For eksempel «345. .3. " vil bli godtatt som en gyldig adresse.

Hva gjør visningsformatet? Når du er ferdig med å skrive inn og forlate feltet, fjerner visningsformatet mellomrommene i adressen og viser bare tallene og periodene. Så hvis du skrev inn «354.35 .2 .12 «, vises adressen som «354.35.2.12». Vær oppmerksom på at hvis du klikker i adressen, eller trykker F2 (for å gå inn i redigeringsmodus) når adressen er valgt, vises mellomrommene på nytt.

Tips!: Hvis du vil kopiere en adresse, går du til forrige kolonne eller kontroll, trykker TAB for å velge den formaterte adressen, og klikker deretter Kopier. Når du gjør dette, kopierer du ikke adressestrengen som inneholder mellomrom.

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

Hvis du trenger å opprette et skjema eller en rapport der postene er sortert etter IP-adresser, baserer du det nye objektet på en spørring som sorterer adresser som tidligere beskrevet, i stedet for i tabellen som lagrer adressene.

Til toppen av siden

Trenger du mer hjelp?

Vil du ha flere alternativer?

Utforsk abonnementsfordeler, bla gjennom opplæringskurs, finn ut hvordan du sikrer enheten og mer.

Fellesskap hjelper deg med å stille og svare på spørsmål, gi tilbakemelding og høre fra eksperter med stor kunnskap.