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

Toto téma popisuje postup řazení IP adres uložených v databázi Access.

Úvod

Pokud pracujete s IP adresami, pravděpodobně 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 od 0 do 255. Následující tabulka obsahuje data před tím, než se použije jakékoli pořadí řazení.

ID počítače

Zaměstnanec

Místo

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 v Accessu je náročné, protože Access neposkytuje speciální datový typ pro ukládání IP adres. I když je IP adresa jenom kolekce čísel, ip adresy nemůžete uložit do číselného pole. Je to proto, že číselné pole podporuje pouze jednu desetinnou čárku (.), zatímco IP adresa obsahuje tři tečky (.). To znamená, že adresy musíte uložit do textového pole.

Vzhledem k tomu, že IP adresy ukládáte do textového pole, nemůžete pomocí integrovaných tlačítek řazení v Accessu seřadit adresy smysluplným způsobem. Tlačítka řazení vždy seřadí hodnoty v textovém poli v abecedním pořadí, i když jsou znaky čísla. Jinými slovy, adresy jsou seřazené podle první číslice, pak podle druhé číslice atd., a ne podle číselných hodnot, které tvoří adresu. Následující tabulka uvádí adresy z předchozí tabulky seřazené v abecedním pořadí podle pole IPAddress.

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í 1, se zobrazí před adresami, které začínají 2 atd. Následující tabulka uvádí 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

Abyste lépe porozuměli krokům souvisejícím s řazením těchto adres, rozdělíte JE do čtyř číselných částí. Adresy musí být seřazené podle první části, pak pro každou hodnotu v první části, pak podle druhé části atd. Tabulka zobrazuje každou část v jiném sloupci, a protože sloupce obsahují jednoduché číselné hodnoty, je možné sloupce seřadit zleva doprava vzestupně, jak je znázorněno v následující tabulce.

Parti

PartII

PartIII

PartIV

1

198

3

93

32

183

93

40

104

30

244

2

104

244

4

1

104

244

253

29

123

4

245

23

Řazení čtyř částí je trik, který spočívá v řazení IP adres. V následujícím postupu vytvoříte dotaz, který kromě pole IP adresy obsahuje čtyři počítané sloupce, ve kterých je v každém sloupci uložená část hodnot adresy. První počítaný sloupec bude obsahovat první číselnou část adresy, druhý počítaný sloupec bude obsahovat druhou číselnou část adresy atd. Místo řazení záznamů podle pole IPAddress dotaz seřadí záznamy podle čtyř počítaných sloupců.

Vytvoření dotazu

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

  1. Klikněte na Vytvořit > návrh dotazu

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

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

  4. Teď jste připraveni přidat počítané sloupce. Do prvního prázdného sloupce vpravo zadejte výraz PartI: Val(Left([IPAddress],(InStr(1;[IPAddress],".") -1))) v řádku Pole . Výraz vrátí znaky předcházející první tečkě (.) v poli IPAddress.

    Teď si prohlédněte výraz. Vzhledem k tomu, že nevíte, kolik číslic tvoří první část adresy, použijete funkci InStr k vyhledání pozice prvního období. Odečtení hodnoty 1 (pro vyloučení tečky) vrátí počet číslic v první části. Toto číslo pak použijete s funkcí Left , abyste z pole IPAddress extrahovali tento počet znaků, počínaje znakem úplně vlevo. 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. Uložte dotaz kliknutím na Uložit na panelu nástrojů Rychlý přístup. Je vhodné to udělat po každém mezikroku.

  6. Přidejte sloupec pro druhou část adresy. Do sloupce vpravo od části PartI zadejte PartII: Val(Mid([IPAddress],InStr(1;[IPAddress],".") +1,InStr(InStr(1;[IPAddress],".") +1,[IPAddress],".") -InStr(1;[IPAddress],".") -1)) v řádku Pole . Výraz vrátí znaky, které jsou umístěny mezi první a druhou tečkou v poli IPAddress.

    Znovu zkontrolujte výraz. Vzhledem k tomu, že nevíte, kolik číslic tvoří druhou část adresy nebo kde přesně začíná druhá část (protože nevíte, jak dlouho je první část), pomocí funkce InStr zjistíte pozice tečk. Pak pomocí funkce Mid extrahujete znaky, které následují za prvním obdobím, ale předcházejí druhému období. Nakonec zavoláte funkci Val , která převede 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 PartII zadejte 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)) v řádku Pole . Výraz vrátí znaky, které jsou umístěny mezi druhou a třetí tečkou v poli IPAddress.

    Znovu zkontrolujte výraz. Vzhledem k tomu, že nevíte, kolik číslic tvoří třetí část adresy nebo kde přesně začíná třetí část (protože nevíte, jak dlouho je první a druhá část), pomocí funkce InStr zjistíte pozice tečk. Pak pomocí funkce Mid extrahujete znaky, které následují po druhém období, ale předcházejí třetímu období. Nakonec zavoláte funkci Val , která převede 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 vpravo od ČástiIIi zadejte PartIV: Val(Right([IPAddress],Len([IPAddress])-InStr(InStr(InStr(1;[IPAddress],".") +1,[IPAddress],".") +1,[IPAddress],"."))) v řádku Pole . Výraz vrátí znaky, které následují po posledním období.

    Znovu zkontrolujte výraz. Klíčem je najít umístění třetího období a pak extrahovat všechny znaky, které za ním následují. Protože nevíte přesně, kde se nachází třetí tečka, zavoláte třikrát funkci InStr , abyste našli pozici třetího období. Pak pomocí funkce Len vypočítáte počet číslic ve čtvrté části. Počet vrácených číslic se pak použije s funkcí Right k extrahování tohoto počtu znaků ze správné části pole IPAddress. Nakonec zavoláte funkci Val , která převede znaky vrácené funkcí Mid na číslo. Tento poslední krok je nezbytný, protože podkladový datový typ je Text.

  9. Nastavte řádek Seřadit u všech čtyř počítaných sloupců na Vzestupně.

    Důležité:    Řádek Seřadit ve sloupci IPAddress musí být prázdný.

    Pokud chcete kromě adres řadit podle dalších hodnot polí, umístěte pole doleva nebo doprava od všech čtyř počítaných sloupců. Ostatní pole řazení neumisťujte mezi počítané sloupce.

  10. Dalším krokem je skrýt čtyři počítané sloupce v datovém 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é uvidíte v zobrazení Datový list.

    ID počítače

    IPAddress

    Parti

    PartII

    PartIII

    PartIV

    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ět do návrhového zobrazení a zrušte zaškrtnutí políčka na řádku Zobrazit u všech čtyř počítaných sloupců. Tím se zabrání 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řepněte do zobrazení Datový list, abyste viděli záznamy v seřazených pořadích. Uvidíte záznamy správně seřazené vzestupně podle IP adres.

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

Ověření IP adres během zadávání dat

Pokud chcete ověřit adresy bez psaní kódu, můžete to udělat v omezeném rozsahu tak, že vlastnost InputMask pole nastavíte na ##.###.# 0;" " a vlastnost Format pole IP adresa&&&&&&&&&&&&.

Co vstupní maska dělá? Když začnete psát do pole adresa, vstupní maska vám zabrání v zadávání jiných znaků než čísel a mezer mezi těmito třemi tečkami. Pokud je číselná část dvouciferné číslo, nechte třetí číslici prázdnou nebo místo toho zadejte mezeru. Všimněte si, že tato vstupní maska neupozorní uživatele, pokud přeskočí zadávání jedné nebo více částí adresy nebo zadá místo číselné hodnoty pouze mezery. Například "345. .3. " bude přijato jako platná adresa.

Co dělá formát zobrazení? Po dokončení psaní a opuštění pole odebere formát zobrazení mezery v adrese a zobrazí pouze čísla a tečky. Pokud jste tedy zadali "354.35.2.12", zobrazí se adresa jako "354.35.2.12". Všimněte si, že pokud při výběru adresy kliknete do adresy nebo stisknete klávesu F2 (pokud chcete přejít do režimu úprav), mezery se znovu zobrazí.

Tip: Pokud chcete zkopírovat adresu, přejděte na předchozí sloupec nebo ovládací prvek, stisknutím klávesy TAB vyberte formátovanou adresu a potom klikněte na 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ých jsou záznamy seřazené podle IP adres, založte nový objekt na dotazu, který seřadí adresy, jak je popsáno výše, a ne na tabulce, ve které jsou adresy uložené.

Začátek stránky

Potřebujete další pomoc?

Chcete další možnosti?

Prozkoumejte výhody předplatného, projděte si školicí kurzy, zjistěte, jak zabezpečit své zařízení a mnohem více.

Komunity vám pomohou klást otázky a odpovídat na ně, poskytovat zpětnou vazbu a vyslechnout odborníky s bohatými znalostmi.