Thursday, December 22, 2022

IP-Adressen in Access sortieren – Microsoft Support

In diesem Thema wird das Verfahren zum Sortieren von IP-Adressen (Internet Protocol) beschrieben, die in einer Access-Datenbank gespeichert sind.

Einführung

Wenn Sie mit IP-Adressen arbeiten, wissen Sie wahrscheinlich bereits, dass dies nicht so einfach ist wie die Arbeit mit Text oder Zahlen. Dies liegt daran, dass eine IP-Adresse eigentlich eine Sammlung von vier numerischen Werten ist, die durch einen Punkt (.) getrennt sind, wobei jeder Wert eine Zahl zwischen 0 und 255 ist. Die folgende Tabelle zeigt Daten, bevor eine Sortierreihenfolge angewendet wird.

Maschinen ID

Mitarbeiter

Standort

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

Das Sortieren von IP-Adressen in Access ist eine Herausforderung, da Access keinen speziellen Datentyp zum Speichern von IP-Adressen bereitstellt. Obwohl eine IP-Adresse nur eine Ansammlung von Zahlen ist, können Sie keine IP-Adressen in einem numerischen Feld speichern. Dies liegt daran, dass ein numerisches Feld nur einen einzigen Dezimalpunkt (.) unterstützt, während eine IP-Adresse drei Punkte (.) enthält. Das bedeutet, dass Sie die Adressen in einem Textfeld hinterlegen müssen.

Da Sie IP-Adressen in einem Textfeld speichern, können Sie die integrierten Sortierschaltflächen in Access nicht verwenden, um die Adressen sinnvoll zu sortieren. Die Sortierschaltflächen sortieren Werte in einem Textfeld immer in alphabetischer Reihenfolge, auch wenn es sich bei den Zeichen um Zahlen handelt. Mit anderen Worten, die Adressen werden nach der ersten Ziffer, dann nach der zweiten Ziffer usw. sortiert, anstatt nach den numerischen Werten, aus denen die Adresse besteht. Die folgende Tabelle zeigt die Adressen aus der vorherigen Tabelle in alphabetischer Reihenfolge im Feld IPAddress.

Maschinen 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

Die Adressen, die mit 1 beginnen, werden vor den Adressen angezeigt, die mit 2 beginnen, und so weiter. Die folgende Tabelle zeigt die Adressen in korrekt aufsteigender Reihenfolge.

Maschinen 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

Um die Schritte zum Sortieren dieser Adressen verständlicher zu machen, unterteilen Sie die IP-Adressen in vier numerische Teile. Die Adressen müssen nach dem ersten Teil sortiert werden, dann nach jedem Wert im ersten Teil, dann nach dem zweiten Teil und so weiter. Die Tabelle zeigt jeden Teil in einer anderen Spalte, und da die Spalten einfache numerische Werte enthalten, ist es möglich, die Spalten von links nach rechts in aufsteigender Reihenfolge zu sortieren, wie in der folgenden Tabelle gezeigt.

TeilI

Teil II

TeilIII

TeilIV

1

198

3

93

32

183

93

40

104

30

244

2

104

244

4

1

104

244

253

29

123

4

245

23

Die vier Teile separat zu sortieren, ist der Trick hinter dem Sortieren von IP-Adressen. Im folgenden Verfahren erstellen Sie eine Abfrage, die zusätzlich zum IP-Adressfeld vier berechnete Spalten enthält, wobei jede Spalte einen Teil der Adresswerte speichert. Die erste berechnete Spalte enthält den ersten numerischen Teil der Adresse, die zweite berechnete Spalte enthält den zweiten numerischen Teil der Adresse und so weiter. Anstatt die Datensätze nach dem IPAddress-Feld zu sortieren, sortiert die Abfrage die Datensätze nach den vier berechneten Spalten.

Erstellen Sie die Abfrage

Sie erstellen eine Auswahlabfrage namens Sorted IPAddresses, die die Datensätze in aufsteigender Reihenfolge der IP-Adressen anzeigt. Angenommen, die aktuelle Datenbank verfügt über eine Tabelle mit dem Namen „MachineDetails", die ein Textfeld mit dem Namen „IPAddress" enthält.

  1. Klicken Sie auf Erstellen > Abfrageentwurf .

  2. Wählen Sie Tabellen hinzufügen ( Tabelle in Access 2013 anzeigen) und ziehen Sie Computerdetails in den oberen Abschnitt der Entwurfsansicht.

  3. Ziehen Sie die Felder MachineID und IPAddress in den Abfrageentwurfsbereich.

  4. Sie können jetzt die berechneten Spalten hinzufügen. Geben Sie in der ersten leeren Spalte rechts den Ausdruck PartI: Val(Left([IPAddress],(InStr(1,[IPAddress],."")-1))) in die Feldzeile ein. Der Ausdruck gibt die Zeichen vor dem ersten Punkt (.) im IPAddress-Feld zurück.

    Überprüfen Sie nun den Ausdruck. Da Sie nicht wissen, aus wie vielen Ziffern der erste Teil der Adresse besteht, verwenden Sie die InStr- Funktion, um die Position des ersten Punktes zu finden. Die Subtraktion von 1 (um den Punkt auszuschließen) gibt die Anzahl der Ziffern im ersten Teil zurück. Anschließend verwenden Sie diese Zahl mit der Left -Funktion, um so viele Zeichen, beginnend mit dem Zeichen ganz links, aus dem IPAddress-Feld zu extrahieren. Schließlich rufen Sie die Val -Funktion auf, um die von der Left -Funktion zurückgegebenen Zeichen in eine Zahl umzuwandeln. Dieser letzte Schritt ist notwendig, da der zugrunde liegende Datentyp Text ist.

  5. Speichern Sie die Abfrage, indem Sie auf der Symbolleiste für den Schnellzugriff auf Speichern klicken. Es ist eine gute Idee, dies nach jedem Zwischenschritt zu tun.

  6. Fügen Sie die Spalte für den zweiten Adressteil hinzu. Geben Sie in der Spalte rechts von PartI PartII ein: Val(Mid([IPAddress],InStr(1,[IPAddress],."")+1,InStr(InStr(1,[IPAddress],".")+ 1,[IPAddress],".")-InStr(1,[IPAddress],".")-1)) in der Feldzeile . Der Ausdruck gibt die Zeichen zurück, die sich zwischen dem ersten und dem zweiten Punkt im Feld IPAddress befinden.

    Überprüfen Sie erneut den Ausdruck. Da Sie nicht wissen, aus wie vielen Ziffern der zweite Teil der Adresse besteht oder wo genau der zweite Teil beginnt (weil Sie nicht wissen, wie lang der erste Teil ist), verwenden Sie die InStr- Funktion, um die Positionen der Punkte zu finden . Anschließend verwenden Sie die Mid -Funktion, um die Zeichen zu extrahieren, die auf den ersten Punkt folgen, aber vor dem zweiten Punkt stehen. Schließlich rufen Sie die Val -Funktion auf, um die von der Mid -Funktion zurückgegebenen Zeichen in eine Zahl umzuwandeln. Dieser letzte Schritt ist notwendig, da der zugrunde liegende Datentyp Text ist.

  7. Fügen Sie die Spalte für den dritten Adressteil hinzu. Geben Sie in der Spalte rechts von PartII PartIII ein: 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 der Feldzeile . Der Ausdruck gibt die Zeichen zurück, die sich zwischen dem zweiten und dritten Punkt im Feld IPAddress befinden.

    Überprüfen Sie erneut den Ausdruck. Da Sie nicht wissen, aus wie vielen Ziffern der dritte Teil der Adresse besteht oder wo genau der dritte Teil beginnt (weil Sie nicht wissen, wie lang der erste und der zweite Teil sind), verwenden Sie die InStr- Funktion, um die Positionen zu finden der Perioden. Anschließend verwenden Sie die Mid -Funktion, um die Zeichen zu extrahieren, die auf den zweiten Punkt folgen, aber dem dritten Punkt vorangehen. Schließlich rufen Sie die Val -Funktion auf, um die von der Mid -Funktion zurückgegebenen Zeichen in eine Zahl umzuwandeln. Dieser letzte Schritt ist notwendig, da der zugrunde liegende Datentyp Text ist.

  8. Fügen Sie die Spalte für den vierten und letzten Adressteil hinzu. Geben Sie in der Spalte rechts von PartIII PartIV ein: Val(Right([IPAddress],Len([IPAddress])-InStr(InStr(InStr(1,[IPAddress],."")+1,[IPAddress], ".")+1,[IPAddress],"."))) in der Feldzeile . Der Ausdruck gibt die Zeichen zurück, die auf den letzten Punkt folgen.

    Überprüfen Sie erneut den Ausdruck. Der Schlüssel besteht darin, den Ort der dritten Periode zu finden und dann alle darauf folgenden Zeichen zu extrahieren. Da Sie nicht genau wissen, wo sich der dritte Punkt befindet, rufen Sie die InStr- Funktion dreimal auf, um die Position des dritten Punkts zu finden. Anschließend verwenden Sie die Len- Funktion, um die Anzahl der Stellen im vierten Teil zu berechnen. Die Anzahl der zurückgegebenen Ziffern wird dann mit der Right -Funktion verwendet, um so viele Zeichen aus dem rechten Teil des IPAddress-Felds zu extrahieren. Schließlich rufen Sie die Val -Funktion auf, um die von der Mid -Funktion zurückgegebenen Zeichen in eine Zahl umzuwandeln. Dieser letzte Schritt ist notwendig, da der zugrunde liegende Datentyp Text ist.

  9. Legen Sie die Sortierzeile aller vier berechneten Spalten auf Aufsteigend fest .

    Wichtig Die Zeile Sort der Spalte IPAddress muss leer bleiben.

    Wenn Sie zusätzlich zu den Adressen nach anderen Feldwerten sortieren möchten, platzieren Sie die Felder entweder links oder rechts von allen vier berechneten Spalten . Platzieren Sie die anderen Sortierfelder nicht zwischen den berechneten Spalten.

  10. Der nächste Schritt besteht darin, die vier berechneten Spalten aus dem Datenblatt auszublenden. Aber bevor Sie das tun, wechseln Sie zur Datenblattansicht, um das Ergebnis der Ausdrücke in den berechneten Spalten anzuzeigen. Die folgende Tabelle zeigt die Spalten, die Sie in der Datenblattansicht sehen.

    Maschinen ID

    IP Adresse

    TeilI

    Teil II

    TeilIII

    TeilIV

    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. Wechseln Sie zurück zur Entwurfsansicht und deaktivieren Sie das Kontrollkästchen in der Zeile Anzeigen aller vier berechneten Spalten. Dadurch wird verhindert, dass die berechneten Spalten in der Datenblattansicht angezeigt werden.

  12. Geben Sie optional Kriterien zum Ausschließen von Datensätzen aus der Abfrage an.

  13. Wechseln Sie zur Datenblattansicht, um die Datensätze in sortierter Reihenfolge anzuzeigen. Sie sehen die Datensätze korrekt sortiert in aufsteigender Reihenfolge der IP-Adressen.

Weitere Anwendungen für sortierte IP-Adressen

Validieren Sie IP-Adressen während der Dateneingabe

Wenn Sie Adressen validieren möchten, ohne Code zu schreiben, können Sie dies in begrenztem Umfang tun, indem Sie die InputMask- Eigenschaft des Felds auf ### .# ##.###.###;0;" " und das Format setzen -Eigenschaft des IP-Adressfelds zu &&&&&&&&&&&& .

Was macht die Eingabemaske? Wenn Sie mit der Eingabe in das Adressfeld beginnen, verhindert die Eingabemaske, dass Sie zwischen den drei Punkten andere Zeichen als Zahlen und Leerzeichen eingeben. Wenn ein numerischer Teil eine zweistellige Zahl ist, lassen Sie die dritte Ziffer leer oder geben Sie stattdessen ein Leerzeichen ein. Beachten Sie, dass diese Eingabemaske den Benutzer nicht warnt, wenn er die Eingabe eines oder mehrerer Teile der Adresse überspringt oder nur Leerzeichen anstelle eines numerischen Werts eingibt. Beispielsweise würde „345. .3." als gültige Adresse akzeptiert.

Was bewirkt das Anzeigeformat? Wenn Sie mit der Eingabe fertig sind und das Feld verlassen, entfernt das Anzeigeformat die Leerzeichen in der Adresse und zeigt nur die Zahlen und Punkte an. Wenn Sie also „354.35 .2 .12 " eingegeben haben, wird die Adresse als „354.35.2.12" angezeigt. Beachten Sie, dass die Leerzeichen wieder erscheinen, wenn Sie in die Adresse klicken oder F2 drücken (um in den Bearbeitungsmodus zu wechseln), wenn die Adresse ausgewählt ist.

Tipp: Wenn Sie eine Adresse kopieren möchten, wechseln Sie zur vorherigen Spalte oder zum vorherigen Steuerelement, drücken Sie die Tabulatortaste, um die formatierte Adresse auszuwählen, und klicken Sie dann auf Kopieren . Dadurch kopieren Sie keine Adresszeichenfolge, die Leerzeichen enthält.

Sortieren Sie Datensätze in einem Formular oder Bericht nach IP-Adressen

Wenn Sie ein Formular oder einen Bericht erstellen müssen, in dem die Datensätze nach IP-Adressen sortiert sind, basieren Sie das neue Objekt auf einer Abfrage, die Adressen wie zuvor beschrieben sortiert, anstatt auf der Tabelle, in der die Adressen gespeichert sind.

Seitenanfang

No comments:

Post a Comment