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

In dit onderwerp wordt de procedure beschreven voor het sorteren van IP-adressen (Internet Protocol) die zijn opgeslagen in een Access-database.

Inleiding

Als u met IP-adressen werkt, weet u waarschijnlijk al dat het niet zo eenvoudig is als het werken met tekst of getallen. Dit komt doordat een IP-adres in feite een verzameling is van vier numerieke waarden, gescheiden door een punt (.), waarbij elke waarde een getal is tussen 0 en 255. In de volgende tabel worden gegevens weergegeven voordat een sorteervolgorde wordt toegepast.

MachineID

Medewerker

Locatie

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

Het sorteren van IP-adressen in Access is een uitdaging omdat Access geen speciaal gegevenstype biedt voor het opslaan van IP-adressen. Hoewel een IP-adres slechts een verzameling getallen is, kunt u ip-adressen niet opslaan in een numeriek veld. Dit komt doordat een numeriek veld slechts één decimaalteken (.) ondersteunt, terwijl een IP-adres drie punten (.) bevat. Dit betekent dat u de adressen in een tekstveld moet opslaan.

Omdat u IP-adressen in een tekstveld opslaat, kunt u de ingebouwde sorteerknoppen in Access niet gebruiken om de adressen op een zinvolle manier te sorteren. Met de sorteerknoppen worden waarden in een tekstveld altijd in alfabetische volgorde gesorteerd, zelfs als de tekens getallen zijn. Met andere woorden, de adressen worden gesorteerd op het eerste cijfer, vervolgens op het tweede cijfer, enzovoort, in plaats van op de numerieke waarden waaruit het adres bestaat. In de volgende tabel ziet u de adressen uit de vorige tabel, gesorteerd in alfabetische volgorde in het veld 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 adressen die met 1 beginnen, worden weergegeven vóór de adressen die beginnen met 2, enzovoort. In de volgende tabel ziet u de adressen in de juiste oplopende volgorde.

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

U breekt de IP-adressen op in vier numerieke delen om de stappen voor het sorteren van deze adressen beter te begrijpen. De adressen moeten worden gesorteerd op het eerste deel, vervolgens voor elke waarde in het eerste deel, vervolgens op het tweede deel, enzovoort. De tabel toont elk onderdeel in een andere kolom en omdat de kolommen eenvoudige numerieke waarden bevatten, wordt het mogelijk om de kolommen van links naar rechts in oplopende volgorde te sorteren, zoals wordt weergegeven in de volgende tabel.

Parti

Deel II

Deel II

DeelIV

1

198

3

93

32

183

93

40

104

30

244

2

104

244

4

1

104

244

253

29

123

4

245

23

Het afzonderlijk sorteren van de vier delen is de truc achter het sorteren van IP-adressen. In de volgende procedure maakt u een query die, naast het veld IP-adres, vier berekende kolommen bevat waarin in elke kolom een deel van de adreswaarden wordt opgeslagen. De eerste berekende kolom bevat het eerste numerieke deel van het adres, de tweede berekende kolom bevat het tweede numerieke deel van het adres, enzovoort. In plaats van de records te sorteren op het veld IPAddress, sorteert de query de records op de vier berekende kolommen.

De query maken

U maakt een selectiequery met de naam Sorted IPAddresses waarmee de records in oplopende volgorde van IP-adressen worden weergegeven. Stel dat de huidige database een tabel bevat met de naam MachineDetails die een tekstveld bevat met de naam IPAddress.

  1. Klik op >queryontwerp maken

  2. Selecteer Tabellen toevoegen (Tabel weergeven in Access) en sleep Machinedetails naar het bovenste gedeelte van de ontwerpweergave.

  3. Sleep de velden MachineID en IPAddress naar het queryontwerpraster.

  4. U bent nu klaar om de berekende kolommen toe te voegen. Typ in de eerste lege kolom aan de rechterkant de expressie PartI: Val(Left([IPAddress],(InStr(1;[IPAddress],".") -1))) in de rij Veld . De expressie retourneert de tekens voorafgaand aan de eerste punt (.) in het veld IPAddress.

    Bekijk nu de expressie. Omdat u niet weet hoeveel cijfers het eerste deel van het adres vormen, gebruikt u de functie InStr om de positie van de eerste punt te vinden. Als u 1 aftrekken (om de punt uit te sluiten), wordt het aantal cijfers in het eerste deel geretourneerd. Vervolgens gebruikt u dit getal met de functie Left om dat aantal tekens te extraheren, beginnend bij het meest linkse teken, uit het veld IPAddress. Ten slotte roept u de functie Val aan om de tekens die door de functie Links worden geretourneerd, te converteren naar een getal. Deze laatste stap is nodig omdat het onderliggende gegevenstype Tekst is.

  5. Sla de query op door op Opslaan te klikken op de werkbalk Snelle toegang. Het is een goed idee om dit na elke tussenliggende stap te doen.

  6. Voeg de kolom toe voor het tweede adresonderdeel. Typ in de kolom rechts van PartI PartII: Val(Mid([IPAddress],InStr(1;[IPAddress],".") +1,InStr(InStr(1;[IPAddress],".") +1,[IPAddress],".") -InStr(1;[IPAddress];".") -1)) in de rij Veld . De expressie retourneert de tekens die zich tussen de eerste en tweede punt in het veld IPAddress bevinden.

    Controleer nogmaals de expressie. Omdat u niet weet hoeveel cijfers het tweede deel van het adres vormen of precies waar het tweede deel begint (omdat u niet weet hoe lang het eerste deel is), gebruikt u de functie InStr om de posities van de punten te vinden. Vervolgens gebruikt u de functie Mid om de tekens op te halen die volgen op de eerste punt maar vóór de tweede punt. Ten slotte roept u de functie Val aan om de tekens die door de functie Mid worden geretourneerd, te converteren naar een getal. Deze laatste stap is nodig omdat het onderliggende gegevenstype Tekst is.

  7. Voeg de kolom toe voor het derde adresonderdeel. Typ in de kolom rechts van PartII 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)) in de rij Veld . De expressie retourneert de tekens die zich bevinden tussen de tweede en derde punt in het veld IPAddress.

    Controleer nogmaals de expressie. Omdat u niet weet hoeveel cijfers het derde deel van het adres vormen of precies waar het derde deel begint (omdat u niet weet hoe lang het eerste en tweede deel zijn), gebruikt u de functie InStr om de posities van de punten te vinden. Vervolgens gebruikt u de functie Mid om de tekens te extraheren die volgen op de tweede punt maar vóór de derde punt. Ten slotte roept u de functie Val aan om de tekens die door de functie Mid worden geretourneerd, te converteren naar een getal. Deze laatste stap is nodig omdat het onderliggende gegevenstype Tekst is.

  8. Voeg de kolom toe voor het vierde en laatste adresgedeelte. Typ in de kolom rechts van PartIII PartIV: Val(Right([IPAddress],Len([IPAddress])-InStr(InStr(InStr(1,[IPAddress],".") +1,[IPAddress],".") +1,[IPAddress],"."))) in de rij Veld . De expressie retourneert de tekens die volgen op de laatste periode.

    Controleer nogmaals de expressie. De sleutel is om de locatie van de derde punt te vinden en vervolgens alle tekens te extraheren die erop volgen. Omdat u niet precies weet waar de derde punt zich bevindt, roept u de functie InStr drie keer aan om de positie van de derde periode te vinden. Vervolgens gebruikt u de functie Len om het aantal cijfers in het vierde deel te berekenen. Het aantal geretourneerde cijfers wordt vervolgens gebruikt met de functie Right om dat aantal tekens uit het rechtergedeelte van het VELD IPAddress te extraheren. Ten slotte roept u de functie Val aan om de tekens die door de functie Mid worden geretourneerd, te converteren naar een getal. Deze laatste stap is nodig omdat het onderliggende gegevenstype Tekst is.

  9. Stel de rij Sorteren van alle vier de berekende kolommen in op Oplopend.

    Belangrijk    De rij Sorteren van de kolom IPAddress moet leeg blijven.

    Als u wilt sorteren op andere veldwaarden, naast de adressen, plaatst u de velden links of rechts van alle vier de berekende kolommen. Plaats de andere sorteervelden niet tussen de berekende kolommen.

  10. De volgende stap is het verbergen van de vier berekende kolommen in het gegevensblad. Maar voordat u dat doet, schakelt u over naar de gegevensbladweergave om het resultaat van de expressies in de berekende kolommen weer te geven. In de volgende tabel ziet u de kolommen die u ziet in de gegevensbladweergave.

    MachineID

    IPAddress

    Parti

    Deel II

    Deel II

    DeelIV

    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. Ga terug naar de ontwerpweergave en schakel het selectievakje in de rij Weergeven van alle vier berekende kolommen uit. Hiermee voorkomt u dat de berekende kolommen worden weergegeven in de gegevensbladweergave.

  12. Geef desgewenst criteria op voor het uitsluiten van records van de query.

  13. Schakel over naar de gegevensbladweergave om de records in gesorteerde volgorde weer te geven. U ziet dat de records correct zijn gesorteerd in oplopende volgorde van de IP-adressen.

Meer toepassingen voor gesorteerde IP-adressen

IP-adressen valideren tijdens gegevensinvoer

Als u adressen wilt valideren zonder code te schrijven, kunt u dit in beperkte mate doen door de eigenschap InputMask van het veld in te stellen op ###.###.###.###; 0;" " en de eigenschap Format van het veld IP-adres om te &&&&&&&&&&&&.

Wat doet het invoermasker? Wanneer u begint met typen in het adresveld, voorkomt het invoermasker dat u andere tekens dan getallen en spaties tussen de drie punten invoert. Als een numeriek onderdeel een dubbelcijferig getal is, laat u het derde cijfer leeg of typt u een spatie. Houd er rekening mee dat dit invoermasker de gebruiker niet waarschuwt als hij een of meer delen van het adres overslaat of alleen spaties typt in plaats van een numerieke waarde. Bijvoorbeeld '345. .3. " zou worden geaccepteerd als een geldig adres.

Wat doet de weergave-indeling? Wanneer u klaar bent met typen en het veld verlaat, worden de spaties in het adres verwijderd en worden alleen de getallen en punten weergegeven. Als u dus '354.35 .2 .12' hebt getypt, wordt het adres weergegeven als '354.35.2.12'. Houd er rekening mee dat als u in het adres klikt of op F2 drukt (om de bewerkingsmodus te openen) wanneer het adres is geselecteerd, de spaties opnieuw worden weergegeven.

Tip: Als u een adres wilt kopiëren, gaat u naar de vorige kolom of het besturingselement, drukt u op Tab om het opgemaakte adres te selecteren en klikt u vervolgens op Kopiëren. Als u dit doet, kopieert u de adresreeks die spaties bevat niet.

Records in een formulier of rapport sorteren op IP-adressen

Als u een formulier of rapport wilt maken waarin de records zijn gesorteerd op IP-adressen, baseer het nieuwe object dan op een query die adressen sorteert zoals eerder beschreven, in plaats van op de tabel waarin de adressen worden opgeslagen.

Naar boven

Meer hulp nodig?

Meer opties?

Verken abonnementsvoordelen, blader door trainingscursussen, leer hoe u uw apparaat kunt beveiligen en meer.

Community's helpen u vragen te stellen en te beantwoorden, feedback te geven en te leren van experts met uitgebreide kennis.