Log på med Microsoft
Log på, eller opret en konto.
Hej
Markér en anden konto.
Du har flere konti
Vælg den konto, du vil logge på med.

I dette emne beskrives fremgangsmåden for sortering af IP-adresser, der er gemt i en Access database.

Introduktion

Hvis du arbejder med IP-adresser, ved du sikkert allerede, at det ikke er lige 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 adskilt af punktum (.), hvor hver værdi er et tal mellem 0 og 255. Følgende tabel viser data, før der anvendes en sorteringsrækkefølge.

MachineID

Medarbejder

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 indeholder en særlig datatype til lagring af IP-adresser. Selvom en IP-adresse blot 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. Med andre ord sorteres adresserne efter det første ciffer, derefter efter det andet ciffer osv., i stedet for efter de numeriske værdier, der udgør adressen. Følgende tabel viser adresserne fra den forrige tabel sorteret i alfabetisk rækkefølge i feltet IPAddress.

MachineID

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. Følgende tabel viser adresserne i den rigtige stigende rækkefølge.

MachineID

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å trinnene i forbindelse med sortering af disse adresser opdeler du IP-adresserne i fire numeriske dele. Adresserne skal sorteres efter den første del og 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 fordi kolonnerne indeholder simple numeriske værdier, bliver det muligt at sortere kolonnerne fra venstre mod højre i stigende rækkefølge, som vist i følgende tabel.

PartI

DelII

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

Sortering af de fire dele separat er tricket bag sortering af IP-adresser. I følgende fremgangsmåde opretter du en forespørgsel, der foruden 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 IPAddresses, 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 iAccess 2013), og træk Computerdetaljer 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 feltrækken. Udtrykket returnerer de tegn, der er før 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 punktum), returneres antallet af cifre i første del. Du kan derefter bruge dette tal sammen med funktionen Venstre til at udtrække så mange tegn 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. Det sidste trin er nødvendigt, fordi den underliggende datatype er Tekst.

  5. Gem forespørgslen ved at klikke på Gem på væ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 PartI skal du skrive PartI: Val(Mid([IPAddress],InStr(1,[IPAddress],".") +1,InStr(InStr(1,[IPAddress],".") +1,[IPAddress],".") -InStr(1,[IPAddress],".") -1)) i feltrækken. Udtrykket returnerer de tegn, der er placeret mellem det første og det andet punkt 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 hvor længe den første del er), bruger du funktionen InStr til at finde placeringerne af perioderne. 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. Det sidste trin er nødvendigt, fordi den underliggende datatype er Tekst.

  7. Tilføj kolonnen for 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 feltrækken. Udtrykket returnerer de tegn, der er placeret mellem det andet og tredje punkt 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), bruger du funktionen InStr til at finde placeringerne af perioderne. Du kan derefter bruge funktionen Midt til at udtrække de tegn, der følger efter det andet punktum, men foran det tredje punktum. Til sidst skal du kalde funktionen Val for at konvertere de tegn, der returneres af funktionen Mid, til et tal. Det sidste trin er nødvendigt, fordi den underliggende datatype er Tekst.

  8. Tilføj kolonnen for den fjerde og sidste adressedel. I kolonnen til højre for PartIII 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 det tredje punktum og derefter udtrække alle de tegn, der følger efter det. Da du ikke ved præcis, hvor den tredje periode er placeret, skal du ringe til 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 cifre, der returneres, bruges derefter sammen med funktionen Højre til at udtrække så mange 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. Det 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. Det 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. Følgende tabel viser de kolonner, der vises i dataarkvisning.

    MachineID

    IPAddress

    PartI

    DelII

    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. 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 udelukke 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 anvendelsesområder for sorterede IP-adresser

Valider IP-adresser under dataindtastning

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

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 punktummer. Hvis en numerisk del er et dobbeltcifret tal, skal du lade det tredje ciffer være tomt eller skrive et mellemrum i stedet for. Bemærk, at denne inputmaske ikke advarer brugeren, hvis han springer indtastning af en eller flere dele af adressen over eller kun skriver mellemrum i stedet for en numerisk værdi. Eksempel: "345. .3. " ville blive accepteret 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 tallene og punkterne. 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 angive 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 sorteres 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, hvor adresserne gemmes.

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.

Var disse oplysninger nyttige?

Hvor tilfreds er du med kvaliteten af sproget?
Hvad påvirkede din oplevelse?
Når du trykker på Send, bliver din feedback brugt til at forbedre Microsoft-produkter og -tjenester. Din it-administrator kan indsamle disse data. Erklæring om beskyttelse af personlige oplysninger.

Tak for din feedback!

×