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

I dette emne beskrives proceduren for sortering af IP-adresser (Internet Protocol), der er gemt i en Access -database.

Introduktion

Hvis du arbejder med IP-adresser, ved du sikkert allerede, at det ikke er så ligetil som at arbejde med tekst eller tal. Dette skyldes, at en IP-adresse i virkeligheden er en samling af fire numeriske værdier, der er adskilt af punktum (.), hvor hver værdi er et tal mellem 0 og 255. I følgende tabel vises data, før der anvendes en sorteringsrækkefølge.

Maskin-id

Ansat

Sted

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

Sortering af IP-adresser i Access er en udfordring, fordi Access ikke har en særlig datatype til lagring af IP-adresser. Selvom en IP-adresse kun er en samling tal, kan du ikke gemme en IP-adresse i et numerisk felt. Dette skyldes, at et numerisk felt kun understøtter et enkelt decimaltegn (.), mens en IP-adresse indeholder tre punktummer (.). Det betyder, at du skal gemme adresserne i et tekstfelt.

Da du gemmer IP-adresser i et tekstfelt, kan du ikke bruge de indbyggede sorteringsknapper i Access til at sortere adresserne på en meningsfuld måde. Sorteringsknapperne sorterer altid værdier i et tekstfelt i alfabetisk rækkefølge, også selvom tegnene er tal. Adresserne sorteres med andre ord efter det første ciffer, derefter efter det andet ciffer osv. i stedet for de numeriske værdier, der udgør adressen. I følgende tabel vises adresserne fra den forrige tabel sorteret i alfabetisk rækkefølge i feltet IPAddress.

Maskin-id

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

De adresser, der starter med 1, vises før de adresser, der starter med 2 osv. I følgende tabel vises adresserne i den korrekte stigende rækkefølge.

Maskin-id

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

For at gøre det nemmere at forstå de trin, der er involveret i sortering af disse adresser, opdeler du IP-adresserne i fire numeriske dele. Adresserne skal sorteres efter den første del, derefter for hver værdi i den første del, derefter efter den anden del osv. Tabellen viser hver del i en anden kolonne, og da kolonnerne indeholder simple numeriske værdier, bliver det muligt at sortere kolonnerne fra venstre mod højre i stigende rækkefølge, sådan som det er vist i følgende tabel.

DelI

DelII

Del II

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 af de fire dele separat er tricket bag sortering af IP-adresser. I følgende fremgangsmåde opretter du en forespørgsel, der ud over feltet IP-adresse indeholder fire beregnede kolonner, hvor hver kolonne gemmer en del af adresseværdierne. Den første beregnede kolonne indeholder den første numeriske del af adressen, den anden beregnede kolonne indeholder den anden numeriske del af adressen osv. I stedet for at sortere posterne efter feltet IPAddress sorterer forespørgslen posterne efter de fire beregnede kolonner.

Opret forespørgslen

Du skal oprette en udvælgelsesforespørgsel med navnet Sorterede IP-adresser, der viser posterne i stigende rækkefølge af IP-adresser. Antag, at den aktuelle database har en tabel med navnet MachineDetails, der indeholder et tekstfelt med navnet IPAddress.

  1. Klik på Opret > Forespørgselsdesign

  2. Vælg Tilføj tabeller (Vis tabel i Access), og træk Maskindetaljer til den øverste del af Designvisning.

  3. Træk felterne MachineID og IPAddress til forespørgselsdesigngitteret.

  4. Du er nu klar til at tilføje de beregnede kolonner. I den første tomme kolonne til højre skal du skrive udtrykket PartI: Val(Left([IPAddress],(InStr(1,[IPAddress],".") -1))) i rækken Felt . Udtrykket returnerer de tegn, der går forud for det første punktum (.) i feltet IPAddress.

    Gennemse nu udtrykket. Da du ikke ved, hvor mange cifre der udgør den første del af adressen, kan du bruge funktionen InStr til at finde placeringen af det første punktum. Hvis du trækker 1 fra (for at udelade punktummet), returneres antallet af cifre i den første del. Derefter skal du bruge dette tal med funktionen Venstre til at udtrække så mange tegn, startende fra tegnet længst til venstre, fra feltet IPAddress. Til sidst skal du kalde funktionen Val for at konvertere de tegn, der returneres af funktionen Venstre , til et tal. Dette sidste trin er nødvendigt, fordi den underliggende datatype er Tekst.

  5. Gem forespørgslen ved at klikke på Gemværktøjslinjen Hurtig adgang. Det er en god ide at gøre dette efter hvert mellemliggende trin.

  6. Tilføj kolonnen for den anden adressedel. I kolonnen til højre for DelI skal du skrive DelII: Val(Mid([IPAddress],InStr(1,[IPAddress],".") +1,InStr(InStr(1,[IPAddress],".") +1,[IPAddress],".") -InStr(1,[IPAddress],".") -1)) i rækken Felt . Udtrykket returnerer de tegn, der er placeret mellem første og anden punktummer i feltet IPAddress.

    Gennemse udtrykket igen. Da du ikke ved, hvor mange cifre der udgør den anden del af adressen, eller præcis hvor den anden del starter (fordi du ikke ved, hvor lang tid den første del er), kan du bruge funktionen InStr til at finde punktummernes placeringer. Du kan derefter bruge funktionen Midt til at udtrække de tegn, der følger efter det første punktum, men foran det andet punktum. Til sidst skal du kalde funktionen Val for at konvertere de tegn, der returneres af funktionen Mid , til et tal. Dette sidste trin er nødvendigt, fordi den underliggende datatype er Tekst.

  7. Tilføj kolonnen for den tredje adressedel. I kolonnen til højre for DelII skal du skrive 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 rækken Felt . Udtrykket returnerer de tegn, der er placeret mellem den anden og tredje periode i feltet IPAddress.

    Gennemse udtrykket igen. Da du ikke ved, hvor mange cifre der udgør tredje del af adressen, eller præcis hvor den tredje del starter (fordi du ikke ved, hvor lang tid den første og anden del er), kan du bruge funktionen InStr til at finde punktummernes placeringer. Du kan derefter bruge funktionen Midt til at udtrække de tegn, der følger efter det andet punktum, men før tredje punktum. Til sidst skal du kalde funktionen Val for at konvertere de tegn, der returneres af funktionen Mid , til et tal. Dette sidste trin er nødvendigt, fordi den underliggende datatype er Tekst.

  8. Tilføj kolonnen for fjerde og sidste adressedel. I kolonnen til højre for DelIII skal du skrive PartIV: Val(Right([IPAddress],Len([IPAddress])-InStr(InStr(InStr(1,[IPAddress],".") +1,[IPAddress],".") +1,[IPAddress],"."))) i rækken Felt . Udtrykket returnerer de tegn, der følger efter det sidste punktum.

    Gennemse udtrykket igen. Nøglen er at finde placeringen af tredje periode og derefter udtrække alle de tegn, der følger efter. Da du ikke ved præcis, hvor den tredje periode er placeret, kalder du funktionen InStr tre gange for at finde placeringen af den tredje periode. Du kan derefter bruge funktionen Længde til at beregne antallet af cifre i fjerde del. Antallet af returnerede cifre bruges derefter sammen med funktionen Right til at udtrække dette antal tegn fra den højre del af feltet IPAddress. Til sidst skal du kalde funktionen Val for at konvertere de tegn, der returneres af funktionen Mid , til et tal. Dette sidste trin er nødvendigt, fordi den underliggende datatype er Tekst.

  9. Indstil rækken Sortér for alle fire beregnede kolonner til Stigende.

    Vigtigt    Rækken Sortér i kolonnen IPAddress skal være tom.

    Hvis du vil sortere efter andre feltværdier ud over adresserne, skal du placere felterne enten til venstre eller højre for alle fire beregnede kolonner. Placer ikke de andre sorteringsfelter mellem de beregnede kolonner.

  10. Næste trin er at skjule de fire beregnede kolonner fra dataarket. Men før du gør det, skal du skifte til dataarkvisning for at se resultatet af udtrykkene i de beregnede kolonner. I følgende tabel vises de kolonner, der vises i dataarkvisning.

    Maskin-id

    IPAddress

    DelI

    DelII

    Del II

    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. Skift tilbage til designvisning, og fjern markeringen i afkrydsningsfeltet i rækken Vis for alle fire beregnede kolonner. Dette forhindrer, at de beregnede kolonner vises i dataarkvisning.

  12. Du kan også angive kriterier for at udelade poster fra forespørgslen.

  13. Skift til dataarkvisning for at få vist posterne i sorteret rækkefølge. Du får vist posterne korrekt sorteret i stigende rækkefølge af IP-adresserne.

Flere anvendelser af sorterede IP-adresser

Valider IP-adresser under dataindtastning

Hvis du vil validere adresser uden at skrive kode, kan du gøre det i et begrænset omfang ved at angive egenskaben Inputmaske for feltet til ###.####.###.####; 0;" " og egenskaben Format for DET IP-adressefelt , der skal&&&&&&&&&&&&.

Hvad gør inputmasken? Når du begynder at skrive i adressefeltet, forhindrer inputmasken dig i at indtaste andre tegn end tal og mellemrum mellem de tre perioder. Hvis en numerisk del er et dobbeltcifret tal, skal du lade det tredje ciffer være tomt eller skrive et mellemrum i stedet. Bemærk, at denne inputmaske ikke advarer brugeren, hvis han springer over at skrive en eller flere dele af adressen, eller kun skriver mellemrum i stedet for en numerisk værdi. F.eks. "345. .3. " accepteres som en gyldig adresse.

Hvad gør visningsformatet? Når du er færdig med at skrive og forlader feltet, fjerner visningsformatet mellemrummene i adressen og viser kun tal og punktummer. Så hvis du har skrevet "354.35 .2 .12", vises adressen som "354.35.2.12". Bemærk, at hvis du klikker inde i adressen eller trykker på F2 (for at skifte til redigeringstilstand), når adressen er markeret, vises mellemrummene igen.

Tip!: Hvis du vil kopiere en adresse, skal du gå til den forrige kolonne eller det forrige kontrolelement, trykke på Tab for at vælge den formaterede adresse og derefter klikke på Kopiér. Ved at gøre dette kopierer du ikke den adressestreng, der indeholder mellemrum.

Sortere poster i en formular eller rapport efter IP-adresser

Hvis du vil oprette en formular eller rapport, hvor posterne er sorteret efter IP-adresser, skal du basere det nye objekt på en forespørgsel, der sorterer adresser som beskrevet tidligere i stedet for på den tabel, der gemmer adresserne.

Toppen af siden

Har du brug for mere hjælp?

Vil du have flere indstillinger?

Udforsk abonnementsfordele, gennemse kurser, få mere at vide om, hvordan du sikrer din enhed og meget mere.

Communities hjælper dig med at stille og besvare spørgsmål, give feedback og høre fra eksperter med omfattende viden.