Sortieren von IP-Adressen

In diesem Thema wird das Verfahren für das Sortieren von IP-Adressen beschrieben, die in einer Microsoft Office Access 2007-Datenbank gespeichert sind.

Inhalt dieses Artikels

Einführung

Erstellen der Abfrage

Weitere Verwendungen für sortierte IP-Adressen

Einführung

Wenn Sie IP-Adressen verwenden, wissen Sie wahrscheinlich, dass das Verwenden von IP-Adressen nicht so einfach ist wie das Verwenden von Text oder Zahlen. Das liegt daran, dass eine IP-Adresse in Wirklichkeit eine Auflistung von vier durch einen Punkt (.) getrennten numerischen Werten ist, wobei jeder Wert einer Zahl zwischen 0 und 255 entspricht. In der folgenden Tabelle werden Daten vor der Anwendung einer Sortierreihenfolge gezeigt.

Computer-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 stellt eine Herausforderung dar, da in Access kein spezieller Datentyp für das Speichern von IP-Adressen bereitgestellt wird. Obwohl eine IP-Adresse nur eine Auflistung von Zahlen ist, können Sie eine IP-Adresse nicht in einem numerischen Feld speichern. Das liegt daran, dass ein numerisches Feld nur ein einziges Dezimaltrennzeichen (.) unterstützt, während eine IP-Adresse drei Punkte enthält (.). Das bedeutet, dass Sie die Adressen in einem Textfeld speichern müssen.

Da Sie IP-Adressen in einem Textfeld speichern, können Sie die integrierten Sortierschaltflächen in Access nicht zum sinnvollen Sortieren der Adressen verwenden. Durch die Sortierschaltflächen werden Werte in einem Textfeld immer in alphabetischer Reihenfolge sortiert, selbst 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. In der folgenden Tabelle werden die Adressen aus der vorherigen Tabelle in alphabetischer Reihenfolge nach dem Feld IP-Adresse sortiert gezeigt.

Computer-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 mit 1 beginnenden Adressen werden vor den mit 2 beginnenden Adressen angezeigt usw. In der folgenden Tabelle werden die Adressen in der richtigen aufsteigenden Reihenfolge gezeigt.

Computer-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


Zum besseren Verständnis der Schritte beim Sortieren dieser Adressen unterteilen Sie die IP-Adressen in vier numerische Teile. Die Adressen müssen nach dem ersten Teil, dann nach jedem Wert im ersten Teil, dann nach dem zweiten Teil usw. sortiert werden. In der Tabelle werden die einzelnen Teile in verschiedenen Spalten angezeigt, und Sie können die Spalten, da sie einfache numerische Werte enthalten, in aufsteigender Reihenfolge von links nach rechts sortieren, wie in der folgenden Tabelle gezeigt.

Teil1

Teil2

Teil3

Teil4

1

198

3

93

32

183

93

40

104

30

244

2

104

244

4

1

104

244

253

29

123

4

245

23


Der Trick beim Sortieren von IP-Adressen ist das getrennte Sortieren der vier Teile. Im folgenden Verfahren erstellen Sie eine Abfrage, die zusätzlich zum Feld mit der IP-Adresse vier berechnete Spalten enthält, in denen jeweils ein Teil der Adresswerte gespeichert ist. Die erste berechnete Spalte enthält den ersten numerischen Teil der Adresse, die zweite berechnete Spalte enthält den zweiten numerischen Teil der Adresse usw. Anstatt die Datensätze nach dem Feld IP-Adresse zu sortieren, werden die Datensätze durch die Abfrage nach den vier berechneten Spalten sortiert.

Seitenanfang

Erstellen der Abfrage

Sie erstellen eine Auswahlabfrage namens Sortierte IP-Adressen, durch die die Datensätze in der aufsteigenden Reihenfolge der IP-Adressen angezeigt werden. Nehmen Sie an, dass die aktuelle Datenbank eine Tabelle namens Computerdetails enthält, die ein Textfeld namens IP-Adresse enthält.

  1. Klicken Sie auf der Registerkarte Erstellen in der Gruppe Andere auf Abfrageentwurf.

  2. Klicken Sie im Dialogfeld Tabelle anzeigen auf der Registerkarte Tabellen auf Computerdetails, und klicken Sie dann auf Hinzufügen. Schließen Sie das Dialogfeld.

  3. Ziehen Sie die Felder Computer-ID und IP-Adresse in den Abfrageentwurfsbereich.

  4. Sie können jetzt die berechneten Spalten hinzufügen. Geben Sie in die erste leere Spalte auf der rechten Seite den Ausdruck Teil1: Val(Left([IP-Adresse],(InStr(1,[IP-Adresse],".")-1))) in die Zeile Feld ein. Durch den Ausdruck werden die Zeichen vor dem ersten Punkt (.) im Feld IP-Adresse zurückgegeben.

    Ü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 Punkts zu suchen. Durch Abziehen von 1 (zum Ausschließen des Punkts) wird die Anzahl von Ziffern im ersten Teil zurückgegeben. Dann verwenden Sie diese Zahl mit der Left-Funktion, um die entsprechende Anzahl von Zeichen aus dem Feld IP-Adresse zu extrahieren, beginnend mit dem am weitesten links stehenden Zeichen. Schließlich rufen Sie die Val-Funktion auf, um die von der Left-Funktion zurückgegebenen Zeichen in eine Zahl zu konvertieren. Dieser letzte Schritt ist notwendig, da der zugrunde liegende Datentyp dem Wert Text entspricht.

  5. Speichern Sie die Abfrage, indem Sie unter Symbolleiste für den Schnellzugriff auf Speichern auf klicken. Dies sollte nach jedem Zwischenschritt erfolgen.

  6. Fügen Sie die Spalte für den zweiten Teil der Adresse hinzu. Geben Sie in die Spalte rechts neben Teil1 die Zeichenfolge Teil2: Val(Mid([IP-Adresse],InStr(1,[IP-Adresse],".")+1,InStr(InStr(1,[IP-Adresse],".")+1,[IP-Adresse],".")-InStr(1,[IP-Adresse],".")-1)) in die Zeile Feld ein. Durch den Ausdruck werden die Zeichen zurückgegeben, die sich zwischen dem ersten und zweiten Punkt im Feld IP-Adresse befinden.

    Überprüfen Sie erneut den Ausdruck. Da Sie nicht wissen, aus wie vielen Ziffern der zweite Teil der Adresse besteht oder wo der zweite Teil genau beginnt (da Sie nicht wissen, wie lang der erste Teil ist), verwenden Sie die InStr-Funktion, um die Positionen der Punkte zu suchen. Dann verwenden Sie die Mid-Funktion, um die Zeichen zu extrahieren, die auf den ersten Punkt folgen, jedoch 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 zu konvertieren. Dieser letzte Schritt ist notwendig, da der zugrunde liegende Datentyp dem Wert Text entspricht.

  7. Fügen Sie die Spalte für den dritten Teil der Adresse hinzu. Geben Sie in die Spalte rechts neben Teil2 die Zeichenfolge Teil3: Val(Mid([IP-Adresse],InStr(InStr(1,[IP-Adresse],".")+1,[IP-Adresse],".")+1,InStr(InStr(InStr(1,[IP-Adresse],".")+1,[IP-Adresse],".")+1,[IP-Adresse],".")-InStr(InStr(1,[IP-Adresse],".")+1,[IP-Adresse],".")-1)) in die Zeile Feld ein. Durch den Ausdruck werden die Zeichen zurückgegeben, die sich zwischen dem zweiten und dritten Punkt im Feld IP-Adresse befinden.

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

  8. Fügen Sie die Spalte für den vierten und letzten Teil der Adresse hinzu. Geben Sie in die Spalte rechts neben Teil3 die Zeichenfolge Teil4: Val(Right([IP-Adresse],Len([IP-Adresse])-InStr(InStr(InStr(1,[IP-Adresse],".")+1,[IP-Adresse],".")+1,[IP-Adresse],"."))) in der Zeile Feld ein. Durch den Ausdruck werden die Zeichen zurückgegeben, die auf den letzten Punkt folgen.

    Überprüfen Sie erneut den Ausdruck. Entscheidend ist, dass Sie die Position des dritten Punkts finden und dann alle darauf folgenden Zeichen extrahieren. Da Sie nicht wissen, wo sich der dritte Punkt genau befindet, rufen Sie die InStr-Funktion drei Mal auf, um die Position des dritten Punkts zu suchen. Dann verwenden Sie die Len-Funktion, um die Anzahl von Ziffern im vierten Teil zu berechnen. Die zurückgegebene Anzahl von Ziffern wird dann mit der Right-Funktion verwendet, um die entsprechende Anzahl von Zeichen aus dem rechten Teil des Felds IP-Adresse zu extrahieren. Schließlich rufen Sie die Val-Funktion auf, um die von der Mid-Funktion zurückgegebenen Zeichen in eine Zahl zu konvertieren. Dieser letzte Schritt ist notwendig, da der zugrunde liegende Datentyp dem Wert Text entspricht.

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

    Wichtig    Die Zeile Sortieren der Spalte IP-Adresse muss leer bleiben.

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

  10. Der nächste Schritt besteht im Ausblenden der vier berechneten Spalten aus dem Datenblatt. Zuvor wechseln Sie jedoch zur Datenblattansicht, um das Ergebnis der Ausdrücke in den berechneten Spalten anzuzeigen. In der folgenden Tabelle werden die Spalten gezeigt, die Sie in der Datenblattansicht sehen.

Computer-ID

IP-Adresse

Teil1

Teil2

Teil3

Teil4

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

  1. Wechseln Sie zurück zur Entwurfsansicht, und deaktivieren Sie in der Zeile Anzeigen aller vier berechneten Spalten das Kontrollkästchen. Dadurch wird verhindert, dass die berechneten Spalten in der Datenblattansicht angezeigt werden.

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

  3. Wechseln Sie zur Datenblattansicht, um die Datensätze in sortierter Reihenfolge anzuzeigen. Die Datensätze werden richtig in aufsteigender Reihenfolge nach den IP-Adressen sortiert angezeigt.

Seitenanfang

Weitere Verwendungen für sortierte IP-Adressen

Überprüfen von IP-Adressen während der Dateneingabe

Wenn Sie Adressen ohne Schreiben von Code überprüfen möchten, können Sie dies in begrenztem Umfang durch Festlegen der InputMask-Eigenschaft des Felds auf ###.###.###.###;0;" " und der Format-Eigenschaft des Felds mit der IP-Adresse auf &&&&&&&&&&&& erreichen.

Was bewirkt die Eingabemaske? Wenn Sie mit dem Eingeben in das Adressfeld beginnen, verhindert die Eingabemaske, dass Sie andere Zeichen als Zahlen und Leerzeichen zwischen den drei Punkten eingeben. Wenn ein numerischer Teil einer zweistelligen Zahl entspricht, lassen Sie die dritte Ziffer leer, oder geben Sie stattdessen ein Leerzeichen ein. Der Benutzer wird durch die Eingabemaske nicht gewarnt, wenn er das Eingeben eines oder mehrerer Teile der Adresse überspringt oder anstelle numerischer Werte nur Leerzeichen eingibt. Beispielsweise wird "345. .3. " als gültige Adresse akzeptiert.

Was bewirkt das Anzeigeformat? Wenn Sie mit dem Eingeben fertig sind und das Feld verlassen, werden durch das Anzeigeformat die Leerzeichen in der Adresse entfernt und nur die Zahlen und Punkte angezeigt. Wenn Sie also "354.35 .2 .12 " eingegeben haben, wird die Adresse als "354.35.2.12" angezeigt. Wenn Sie in die Adresse klicken oder F2 drücken (um in den Bearbeitungsmodus zu wechseln), während die Adresse ausgewählt ist, werden die Leerzeichen wieder angezeigt.

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

Sortieren von Datensätzen 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, durch die Adressen, wie vorher beschrieben, sortiert werden, anstatt auf der Tabelle, in der die Adressen gespeichert werden.

Seitenanfang

Teilen Facebook Facebook Twitter Twitter E-Mail E-Mail

War diese Information hilfreich?

Sehr gut. Noch anderes Feedback?

Was können wir verbessern?

Vielen Dank für Ihr Feedback!

×