Řazení IP adres v Accessu

Platí pro
Access pro Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Toto téma popisuje postup řazení adres IP (Internet Protocol) uložených v databázi Accessu.

Úvod

Pokud pracujete s IP adresami, nejspíš už víte, že to není tak jednoduché jako práce s textem nebo čísly. Je to proto, že IP adresa je ve skutečnosti kolekce čtyř číselných hodnot oddělených tečkou (.), kde každá hodnota je číslo mezi 0 a 255. Následující tabulka zobrazuje data před použitím libovolného pořadí řazení.

ID počítače Zaměstnanec Umístění: 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

Řazení IP adres je v Accessu náročné, protože Access nenabízí speciální datový typ pro ukládání IP adres. IP adresa je sice jenom soubor čísel, ale IP adresy se nedají ukládat do číselného pole. Je to proto, že číselné pole podporuje pouze jednu desetinnou čárku (.), zatímco adresa IP obsahuje tři tečky (.). To znamená, že adresy musíte uložit do textového pole.

IP adresy ukládáte do textového pole, a proto nemůžete pomocí tlačítek pro řazení, která jsou v Accessu zabudovaná, adresy srozumitelně seřadit. Tlačítka řazení seřadí hodnoty v textovém poli vždycky v abecedním pořadí, i když se jedná o čísla. Jinými slovy, adresy jsou seřazeny podle první číslice, pak podle druhé číslice a tak dále, nikoli podle číselných hodnot, které tvoří adresu. Následující tabulka ukazuje adresy z předchozí tabulky seřazené podle abecedy podle pole Adresa.

ID počítače 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

Adresy, které začínají číslem 1, se zobrazí před adresami, které začínají číslem 2 atd. Následující tabulka ukazuje adresy ve správném vzestupném pořadí.

ID počítače 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

Rozdělení IP adres na čtyři číselné části, aby bylo snazší pochopit postup řazení těchto adres. Adresy musí být seřazeny podle první části, pak podle každé hodnoty v první části, pak podle druhé části a tak dále. V tabulce je každá část zobrazena v jiném sloupci, a protože sloupce obsahují jednoduché číselné hodnoty, je možné je seřadit vzestupně zleva doprava, jak ukazuje následující tabulka.

Část I Část II Část III Část IV
1 198 3 93
32 183 93 40
104 30 244 2
104 244 4 1
104 244 253 29
123 4 245 23

Třídění těchto čtyř částí odděleně je trik při řazení IP adres. V následujícím postupu vytvoříte dotaz, který kromě pole IP adresy obsahuje i čtyři počítané sloupce, kde každý sloupec obsahuje část hodnot adres. První počítaný sloupec bude obsahovat první číselnou část adresy, druhý počítaný sloupec bude obsahovat druhou číselnou část adresy a tak dále. Místo řazení záznamů podle pole AdresaIP dotaz záznamy seřadí podle čtyř počítaných sloupců.

Vytvoření dotazu

Vytvoříte výběrový dotaz s názvem Seřazené adresy IP, který zobrazí záznamy ve vzestupném pořadí podle IP adres. Předpokládejme, že aktuální databáze obsahuje tabulku s názvem MachineDetails obsahující textové pole s názvem IPAddress.

  1. Klikněte na tlačítko Vytvořit>návrh dotazu. 

  2. Vyberte Přidat tabulky (Zobrazit tabulku v Accessu) a přetáhněte Podrobnosti o počítači do horní části návrhového zobrazení.

  3. Přetáhněte pole MachineID a IPAddress do návrhové mřížky dotazu.

  4. Nyní můžete přidat počítané sloupce. Do prvního prázdného sloupce napravo zadejte výraz PartI: Val(Left([IPAddress],(InStr(1,[IPAddress],".")-1))) v řádku Pole . Výraz vrátí znaky před první tečkou (.) v poli Adresa.
    Teď si výraz prohlédněte. Protože nevíte, kolik číslic tvoří první část adresy, použijete k určení pozice první tečky funkci InStr . Odečtením 1 (s vyloučením tečky) se vrátí počet číslic v první části. Toto číslo pak použijete s funkcí Left k extrahování takového počtu znaků z pole Adresa_IP od posledního znaku zleva. Nakonec zavoláte funkci Val , která převede znaky vrácené funkcí Left na číslo. Tento poslední krok je nezbytný, protože podkladový datový typ je Text.

  5. Kliknutím na tlačítko Uložit na panelu nástrojů Rychlý přístup dotaz uložte. Je vhodné to udělat po každém mezikroku.

  6. Přidejte sloupec pro druhou část adresy. Do sloupce napravo od PartI zadejte PartII: Val(Mid([IPAddress],InStr(1,[IPAddress],".")+1,InStr(InStr(1,[IPAddress],".")+1,[Adresa_IP],".")-InStr(1,[IPAddress],".")-1)) v řádku Pole . Výraz vrátí znaky, které se v poli IP nacházejí mezi prvním a druhým obdobím.
    Znovu zkontrolujte výraz. Protože nevíte, kolik číslic tvoří druhou část adresy nebo kde přesně začíná druhá část (protože nevíte, jak dlouhá je první část), můžete k nalezení pozic období použít funkci InStr . Potom můžete pomocí funkce Mid extrahovat znaky, které následují po první tečce, ale předcházejí druhé tečce. Nakonec zavoláte funkci Val , abyste převedli znaky vrácené funkcí Mid na číslo. Tento poslední krok je nezbytný, protože podkladový datový typ je Text.

  7. Přidejte sloupec pro třetí část adresy. Do sloupce napravo od části II zadejte ČástIII: Val(Mid([IPAddress],InStr(InStr(1,[IPAddress],".")+1,[Adresa_IP],".")+1,InStr(InStr(InStr(1,[Adresa_IP],".")+1,[Adresa_IP],".")+1,[Adresa_IP],".")-InStr(InStr(1,[IPAddress],".")+1,[Adresa_IP],".")-1)) v řádku Pole . Výraz vrátí znaky, které se v poli IPAddress nacházejí mezi druhou a třetí tečkou.
    Znovu zkontrolujte výraz. Protože nevíte, kolik číslic tvoří třetí část adresy nebo kde přesně začíná třetí část (protože nevíte, jak dlouhé jsou první a druhé části), použijete k nalezení pozic období funkci InStr . Potom můžete pomocí funkce Mid extrahovat znaky, které následují po druhé tečce, ale předcházejí třetí tečce. Nakonec zavoláte funkci Val , abyste převedli znaky vrácené funkcí Mid na číslo. Tento poslední krok je nezbytný, protože podkladový datový typ je Text.

  8. Přidejte sloupec pro čtvrtou a poslední část adresy. Do sloupce napravo od části III zadejte PartIV: Val(Right([IPAddress],Len([IPAddress])-InStr(InStr(InStr(1,[IPAddress],".")+1,[Adresa_IP],".")+1,[IPAddress],"."))) v řádku Pole . Výraz vrátí znaky, které následují za poslední tečkou.
    Znovu zkontrolujte výraz. Klíčem je najít místo třetí tečky a poté extrahovat všechny znaky, které ji následují. Protože přesně nevíte, kde se třetí perioda nachází, zavoláte třikrát funkci InStr , abyste našli pozici třetí periody. Potom použijte funkci Len k výpočtu počtu číslic ve čtvrté části. Počet vrácených číslic se pak použije s funkcí Right k extrakci takového počtu znaků z pravé části pole IPAddress. Nakonec zavoláte funkci Val , abyste převedli znaky vrácené funkcí Mid na číslo. Tento poslední krok je nezbytný, protože podkladový datový typ je Text.

  9. Nastavte řádek Seřadit všech čtyř počítaných sloupců na Vzestupně.
    Důležité Řádek Seřadit ve sloupci AdresaIP musí zůstat prázdný.
    Chcete-li řadit kromě adres i podle dalších hodnot polí, umístěte pole vlevo nebo vpravo od všech čtyř počítaných sloupců. Neumísťujte ostatní pole řazení mezi počítané sloupce.

  10. Dalším krokem je skrytí čtyř počítaných sloupců z datového listu. Než to ale uděláte, přepněte do zobrazení Datový list, abyste viděli výsledek výrazů v počítaných sloupcích. Následující tabulka uvádí sloupce, které se zobrazí v zobrazení Datový list.

    ID počítače IPAddress Část I Část II Část III Část IV
    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. Přepněte zpátky do návrhového zobrazení a zrušte zaškrtnutí políčka Zobrazit řádek všech čtyř počítaných sloupců. Tím zabráníte zobrazení počítaných sloupců v zobrazení Datový list.

  12. Volitelně můžete zadat kritéria pro vyloučení záznamů z dotazu.

  13. Přepnutím do zobrazení Datový list zobrazíte záznamy seřazené podle pořadí. Záznamy se zobrazí správně seřazené vzestupně podle IP adres.

Další použití seřazených IP adres

Ověřovat IP adresy při zadávání dat

Pokud chcete ověřit adresy bez zápisu kódu, můžete to v omezené míře provést nastavením vlastnosti InputMask daného pole na ###.###.###.###.###; 0;" " a vlastnost Formát pole IP adresy, která má &&&&&&&&&&&&.

K čemu slouží vstupní maska? Když začnete do pole adresy psát, zabrání vstupní maska zadávání jiných znaků než čísel a mezer mezi tečkami. Pokud je číselná část dvouciferná, ponechte třetí číslici prázdnou nebo místo ní zadejte mezeru. Všimněte si, že tato vstupní maska neupozorňuje uživatele, pokud vynechá psaní jedné nebo více částí adresy nebo pokud místo číselné hodnoty zadá pouze mezery. Příklad: "345. .3. " by byla považována za platnou adresu.

K čemu slouží formát zobrazení? Jakmile dokončíte zadávání textu a opustíte pole, formát zobrazení odebere mezery v adrese a zobrazí jenom čísla a tečky. Pokud tedy zadáte "354.35 .2.12", adresa se zobrazí jako "354.35.2.12". Všimněte si, že pokud kliknete do adresy nebo stisknete klávesu F2 (pro vstup do režimu úprav), když je adresa vybraná, mezery se znovu zobrazí.

Tip:

Chcete-li adresu zkopírovat, přejděte na předchozí sloupec nebo ovládací prvek, stisknutím klávesy TAB vyberte formátovanou adresu a poté klikněte na tlačítko Kopírovat. Tímto způsobem nebudete kopírovat řetězec adresy, který obsahuje mezery.

Řazení záznamů ve formuláři nebo sestavě podle IP adres

Pokud potřebujete vytvořit formulář nebo sestavu, ve které jsou záznamy seřazené podle IP adres, založte nový objekt na dotazu, který seřadí adresy výše popsaným způsobem, nikoli na tabulce, ve které jsou adresy uloženy.

Začátek stránky