Access 2016 - Ip Adressen sortieren
Hallo zusammen,
ich habe mal eine Frage.
In einer Tabelle sollen Ip Adressen erfasst werden.
Format:
10.12.0.0
10.12.0.1
beim Sortieren bekomme ich dies Problem:
10.12.0.214
10.12.0.215
10.12.0.216
10.12.0.24
10.12.0.26
10.12.0.27
gibt es eine Möglichkeit Ip Adressen so zu formatieren das die richtige Reihenfolge eingehalten wird (aufsteigend) ?
Vielen Dank schon mal
Gruß
Norbert
ich habe mal eine Frage.
In einer Tabelle sollen Ip Adressen erfasst werden.
Format:
10.12.0.0
10.12.0.1
beim Sortieren bekomme ich dies Problem:
10.12.0.214
10.12.0.215
10.12.0.216
10.12.0.24
10.12.0.26
10.12.0.27
gibt es eine Möglichkeit Ip Adressen so zu formatieren das die richtige Reihenfolge eingehalten wird (aufsteigend) ?
Vielen Dank schon mal
Gruß
Norbert
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 328826
Url: https://administrator.de/contentid/328826
Ausgedruckt am: 22.11.2024 um 20:11 Uhr
5 Kommentare
Neuester Kommentar
Hallo,
das Problem ist das es ein Textfeld ist das von link nach rechts wert für Wert sortiert wird.
Entweder du schreibst die IP Adressen pro Byte 3 Stellig.
Sprich '010.012.0.024'
Oder du verwendest für jedes Byte eine eigene Spalte und verwendest dann als ein Zahlenformat für die Werte. Sprich du Arbeitest mit 4 Integer Spalten.
das Problem ist das es ein Textfeld ist das von link nach rechts wert für Wert sortiert wird.
Entweder du schreibst die IP Adressen pro Byte 3 Stellig.
Sprich '010.012.0.024'
Oder du verwendest für jedes Byte eine eigene Spalte und verwendest dann als ein Zahlenformat für die Werte. Sprich du Arbeitest mit 4 Integer Spalten.
Moin,
Die Frage ist ja u.A., von welchem Datentyp das IP-Feld ist...
Ich nehme an, als CHAR() bzw. VARCHAR().
Dann ist deine als falsch deklarierte Sortierung völlig richtig,
denn 21(4) kommt nunmal vor 24..
Spannend wird es, wenn du IPs in Form von
10.12.0.1
10.12.0.2
10.12.0.3
...
10.12.0.11
10.12.0.12
10.12.0.13
..
10.12.0.21
10.12.0.22
10.12.0.23
..
hast, denn dann wird wie folgt sortiert
10.12.0.1
10.12.0.11
10.12.0.12
10.12.0.13
...
10.12.0.2
10.12.0.21
10.12.0.22
10.12.0.23
...
10.12.0.3
Als Zahl wirst du es vermutlich etwas leichter haben.
In Excel gebe ich immer ein Zahlenformat vor
"10.12."000"."000 denn dann füllt Excel die fehlenden Stellen mit 0; das Bedeutet aber auch, dass die Anwender nur 10 für die 10.12.0.010 eintragen müssen. Dann klappt auch die Sortierung. Liest sich aber auch besch...
Was denkbar wäre (aber nicht die goldene Lösung sein muss/ wird):
Für jedes Segment ein eigenes Datenfeld (Int) vorsehen und am Ende von vorne nach hinten sortieren und als zusammengesetztes Feld dann in den Reports darstellen.
Ggf. lässt sich aber auch irgendwas mit VB deichseln (hier wäre ich dann aber überfragt)....
Gruß
em-pie
Die Frage ist ja u.A., von welchem Datentyp das IP-Feld ist...
Ich nehme an, als CHAR() bzw. VARCHAR().
Dann ist deine als falsch deklarierte Sortierung völlig richtig,
denn 21(4) kommt nunmal vor 24..
Spannend wird es, wenn du IPs in Form von
10.12.0.1
10.12.0.2
10.12.0.3
...
10.12.0.11
10.12.0.12
10.12.0.13
..
10.12.0.21
10.12.0.22
10.12.0.23
..
hast, denn dann wird wie folgt sortiert
10.12.0.1
10.12.0.11
10.12.0.12
10.12.0.13
...
10.12.0.2
10.12.0.21
10.12.0.22
10.12.0.23
...
10.12.0.3
Als Zahl wirst du es vermutlich etwas leichter haben.
In Excel gebe ich immer ein Zahlenformat vor
"10.12."000"."000 denn dann füllt Excel die fehlenden Stellen mit 0; das Bedeutet aber auch, dass die Anwender nur 10 für die 10.12.0.010 eintragen müssen. Dann klappt auch die Sortierung. Liest sich aber auch besch...
Was denkbar wäre (aber nicht die goldene Lösung sein muss/ wird):
Für jedes Segment ein eigenes Datenfeld (Int) vorsehen und am Ende von vorne nach hinten sortieren und als zusammengesetztes Feld dann in den Reports darstellen.
Ggf. lässt sich aber auch irgendwas mit VB deichseln (hier wäre ich dann aber überfragt)....
Gruß
em-pie
Hallo,
Nö, das ist vollkommen korrekt. Du hast ja keine Zahlen welche du sortieren willst. Du hast Text u d da ist die Sortierung dann richtig. Eine Zahl hat (hier in DE) nur ein Dezimaltrennzeichen keine 4. Teile dein IP in 4 Spalten, dann kannst du die korrekt als Zahl Sortieren und in der Ausgabe wieder zusammen setzen und mit ein Punkt dazwischen versehen. Oder Du schreibst deine IPs als Zahl ohne Trennzeichen, nur dann wirst du Teils bis zu 3 Nullen pro Oktet einfügen müssen z.B. die IP 1.1.1. ist nicht gleich einer 1111. Da wäre eine 1001001001 korrekt, d.h. die Wertigkeit jedes Oktets muss erhalten bleiben. Dann wäre eine 001001001001 eben auch die IP 1.1.1.1. Aber Zahlen haben selten bzw. keine vorhergehenden Nullen. odr schreibst du immer 000000000000000000000000000000000000000000000000000000000001 wenn du nur ein 1 hast:-?
10012000214
10012000215
10012000216
10012000024
10012000026
10012000027
Lässt Zahlenmässig Sortieren sofern du auch weisst das es ein 10. vorneweg hat und kein 100. Nur bei einer Zahl 01001200014 wird die führende Null immer weggemacht , bei Text aber nicht.
Das Problem ist nicht Access, es ist dein Verständniss von Zahlen und Buchstaben und wie diese uns Menschen dargestellt wird. Ein Mensch kann das schon erkennen, einen Computer musst du schon sagen was du willst.
Gruß,
Peter
Nö, das ist vollkommen korrekt. Du hast ja keine Zahlen welche du sortieren willst. Du hast Text u d da ist die Sortierung dann richtig. Eine Zahl hat (hier in DE) nur ein Dezimaltrennzeichen keine 4. Teile dein IP in 4 Spalten, dann kannst du die korrekt als Zahl Sortieren und in der Ausgabe wieder zusammen setzen und mit ein Punkt dazwischen versehen. Oder Du schreibst deine IPs als Zahl ohne Trennzeichen, nur dann wirst du Teils bis zu 3 Nullen pro Oktet einfügen müssen z.B. die IP 1.1.1. ist nicht gleich einer 1111. Da wäre eine 1001001001 korrekt, d.h. die Wertigkeit jedes Oktets muss erhalten bleiben. Dann wäre eine 001001001001 eben auch die IP 1.1.1.1. Aber Zahlen haben selten bzw. keine vorhergehenden Nullen. odr schreibst du immer 000000000000000000000000000000000000000000000000000000000001 wenn du nur ein 1 hast:-?
10012000214
10012000215
10012000216
10012000024
10012000026
10012000027
Lässt Zahlenmässig Sortieren sofern du auch weisst das es ein 10. vorneweg hat und kein 100. Nur bei einer Zahl 01001200014 wird die führende Null immer weggemacht , bei Text aber nicht.
Das Problem ist nicht Access, es ist dein Verständniss von Zahlen und Buchstaben und wie diese uns Menschen dargestellt wird. Ein Mensch kann das schon erkennen, einen Computer musst du schon sagen was du willst.
Gruß,
Peter