Táto téma popisuje postup zoraďovania adries IP uložených v databáze Access.
Úvod
Ak pracujete s IP adresami, pravdepodobne už viete, že to nie je také jednoduché ako práca s textom alebo číslami. Dôvodom je, že IP adresa je v skutočnosti kolekcia štyroch číselných hodnôt oddelených bodkou (.), kde každá hodnota je číslo od 0 do 255. Nasledujúca tabuľka zobrazuje údaje pred tým, ako sa použije spôsob zoradenia.
MachineID |
Zamestnanec |
Poloha |
IPAdresa |
---|---|---|---|
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 |
Zoraďovanie IP adries v Accesse je náročné, pretože Access neposkytuje špeciálny typ údajov na ukladanie IP adries. Hoci IP adresa je len kolekcia čísel, IP adresy nie je možné uložiť do číselného poľa. Dôvodom je, že číselné pole podporuje iba jednu desatinnú čiarku (.), zatiaľ čo IP adresa obsahuje tri bodky (.). To znamená, že adresy musíte uložiť do textového poľa.
Keďže IP adresy ukladáte do textového poľa, nemôžete použiť vstavané tlačidlá zoraďovania v Accesse na zmysluplné zoradenie adries. Tlačidlá zoradenia vždy zoraďujú hodnoty v textovom poli v abecednom poradí, a to aj v prípade, že znaky sú čísla. Inými slovami, adresy sú zoradené podľa prvej číslice, potom podľa druhej číslice atď. namiesto číselných hodnôt, ktoré tvoria adresu. Nasledujúca tabuľka zobrazuje adresy z predchádzajúcej tabuľky zoradené v abecednom poradí v poli IPAdresa.
MachineID |
IPAdresa |
---|---|
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, ktoré začínajú číslom 1, sa zobrazia pred adresami začínajúcimi číslom 2 atď. Nasledujúca tabuľka zobrazuje adresy v správnom vzostupnom poradí.
MachineID |
IPAdresa |
---|---|
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 |
Ak chcete zjednodušiť pochopenie krokov, ktoré sa podieľajú na zoraďovaní týchto adries, rozdeľte IP adresy na štyri číselné časti. Adresy musia byť zoradené podľa prvej časti, potom pre každú hodnotu v prvej časti, potom podľa druhej časti atď. Tabuľka zobrazuje každú časť v inom stĺpci a keďže stĺpce obsahujú jednoduché číselné hodnoty, stĺpce sa budú dať zoradiť zľava doprava vo vzostupnom poradí, ako je to znázornené v nasledujúcej tabuľke.
Parti |
PartIII |
PartIIII |
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 |
Zoradenie štyroch častí samostatne je trik pri zoraďovaní IP adries. V nasledujúcom postupe vytvoríte dotaz, ktorý okrem poľa IP adresy obsahuje aj štyri vypočítané stĺpce, v ktorých každý stĺpec ukladá časť hodnôt adries. Prvý vypočítaný stĺpec bude mať prvú číselnú časť adresy, druhý vypočítaný stĺpec bude mať druhú číselnú časť adresy a tak ďalej. Namiesto zoradenia záznamov podľa poľa IPAdresa dotaz zoradí záznamy podľa štyroch vypočítaných stĺpcov.
Vytvorenie dotazu
Vytvoríte dotaz Select s názvom Zoradené adresy IPAddresses, ktorý zobrazí záznamy vo vzostupnom poradí IP adries. Predpokladajme, že aktuálna databáza obsahuje tabuľku s názvom MachineDetails, ktorá obsahuje textové pole s názvom IPAdresa.
-
Kliknite na položku Vytvoriť > návrh dotazu.
-
Vyberte položku Pridať tabuľky (Zobraziť tabuľku v Accesse) a presuňte položku Podrobnosti o počítači do hornej časti návrhového zobrazenia.
-
Presuňte polia MachineID a IPAddress do mriežky návrhu dotazu.
-
Teraz môžete pridať vypočítané stĺpce. Do prvého prázdneho stĺpca vpravo zadajte výraz PartI: Val(Left([IPAddress],(InStr(1;[IPAdresa],".") -1)) v riadku Pole . Výraz vráti znaky pred prvou bodkou (.) v poli IPAdresa.
Teraz skontrolujte výraz. Keďže neviete, koľko číslic predstavuje prvú časť adresy, použite funkciu InStr na vyhľadanie pozície prvej bodky. Odčítaním čísla 1 (na vylúčenie obdobia) sa vráti počet číslic v prvej časti. Toto číslo potom použijete s funkciou Left na extrahovanie veľkého počtu znakov, počnúc znakom úplne vľavo, z poľa IPAdresa. Nakoniec zavoláte funkciu Val a skonvertujete znaky vrátené funkciou Left na číslo. Tento posledný krok je potrebný, pretože základný typ údajov je Text.
-
Dotaz uložte kliknutím na položku Uložiť na paneli s nástrojmi Rýchly prístup. Je vhodné to urobiť po každom prechodnom kroku.
-
Pridajte stĺpec pre druhú časť adresy. Do stĺpca napravo od položky PartI zadajte časťII: Val(Mid([IPAdresa],InStr(1;[ADRESA IPAdresy],".") +1,InStr(InStr(1;[ADRESA IPAdresy];".") +1,[ADRESA IPAdresy],".") -InStr(1;[ADRESA IPAdresy],".") -1)) v riadku Pole . Výraz vráti znaky, ktoré sa nachádzajú medzi prvou a druhou bodkou v poli IPAdresa.
Znova skontrolujte výraz. Keďže neviete, koľko číslic tvorí druhá časť adresy alebo presne miesto, kde začína druhá časť (pretože nie je to, ako dlho je prvá časť), na vyhľadanie pozícií bodiek sa používa funkcia InStr . Potom použite funkciu Mid na extrahovanie znakov, ktoré nasledujú za prvou bodkou, ale pred druhým bodkou. Nakoniec zavoláte funkciu Val a skonvertujete znaky vrátené funkciou Mid na číslo. Tento posledný krok je potrebný, pretože základný typ údajov je Text.
-
Pridajte stĺpec pre tretiu časť adresy. Do stĺpca napravo od položky PartII zadajte PartIII: Val(Mid([IPAddress],InStr(InStr(1;[IPAdresa],".") +1,[ADRESA IPAdresy],".") +1,InStr(InStr(InStr(1;[ADRESA IPAdresy];".") +1,[ADRESA IPAdresy],".") +1,[ADRESA IPAdresy],".") -InStr(InStr(1;[ADRESA IPAdresy];".") +1,[ADRESA IPAdresy],".") -1)) v riadku Pole . Výraz vráti znaky, ktoré sa nachádzajú medzi druhou a treťou bodkou v poli IPAdresa.
Znova skontrolujte výraz. Keďže neviete, koľko číslic predstavuje tretiu časť adresy alebo presne to, kde začína tretia časť (pretože neviete, ako dlho je prvá a druhá časť), na vyhľadanie pozícií bodiek sa používa funkcia InStr . Potom použite funkciu Mid na extrahovanie znakov, ktoré nasledujú za druhou bodkou, ale pred tretím obdobím. Nakoniec zavoláte funkciu Val a skonvertujete znaky vrátené funkciou Mid na číslo. Tento posledný krok je potrebný, pretože základný typ údajov je Text.
-
Pridajte stĺpec pre štvrtú a poslednú časť adresy. Do stĺpca napravo od položky PartIII zadajte časťIV: Val(Right([IPAddress],Len([IPAddress])-InStr(InStr(InStr(1;[IPAdresa],".") +1,[ADRESA IPAdresy],".") +1,[ADRESA IPAdresy],"."))) v riadku Pole . Výraz vráti znaky, ktoré nasledujú za posledným obdobím.
Znova skontrolujte výraz. Kľúčom je nájsť umiestnenie tretej bodky a potom extrahovať všetky znaky, ktoré za ním nasledujú. Keďže presne neviete, kde sa nachádza tretia bodka, trikrát zavoláte funkciu InStr , aby ste našli pozíciu tretej bodky. Potom použite funkciu Len na výpočet počtu číslic vo štvrtej časti. Počet vrátených číslic sa potom použije s funkciou Right na extrahovanie veľkého počtu znakov z pravej časti poľa IPAdresy. Nakoniec zavoláte funkciu Val a skonvertujete znaky vrátené funkciou Mid na číslo. Tento posledný krok je potrebný, pretože základný typ údajov je Text.
-
Nastavte riadok zoradenia všetkých štyroch vypočítaných stĺpcov na možnosť Vzostupne.
Dôležité Riadok zoradenia stĺpca IPAddress musí zostať prázdny.
Ak chcete okrem adries zoradiť aj iné hodnoty polí, umiestnite polia naľavo alebo napravo od všetkých štyroch vypočítaných stĺpcov. Medzi vypočítavané stĺpce neumiernite ostatné polia zoradenia.
-
Ďalším krokom je skrytie štyroch vypočítaných stĺpcov v údajovom hárku. Skôr než to urobíte, prepnite na údajové zobrazenie a zobrazte výsledok výrazov vo vypočítaných stĺpcoch. V nasledujúcej tabuľke sú uvedené stĺpce, ktoré sa zobrazia v údajovom zobrazení.
MachineID
IPAdresa
Parti
PartIII
PartIIII
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
-
Prepnite späť na návrhové zobrazenie a zrušte začiarknutie políčka v riadku Zobraziť všetky štyri vypočítané stĺpce. Týmto sa zabráni zobrazeniu vypočítaných stĺpcov v údajovom zobrazení.
-
Voliteľne môžete zadať kritériá na vylúčenie záznamov z dotazu.
-
Ak chcete zobraziť záznamy v zoradenom poradí, prepnite na údajové zobrazenie. Zobrazia sa záznamy správne zoradené vo vzostupnom poradí IP adries.
Ďalšie spôsoby použitia zoradených IP adries
Overenie IP adries počas zadávania údajov
Ak chcete overiť adresy bez písania kódu, môžete to urobiť v obmedzenom rozsahu nastavením vlastnosti VstupnáMaska poľa na ###.###.###.####; 0;" " a vlastnosť Format poľa IP adresy na &&&&&&&&&&&&.
Čo robí vstupná maska? Keď začnete písať do poľa adresy, vstupná maska vám zabráni v zadávaní iných znakov ako čísel a medzier medzi troma bodkami. Ak je číselná časť dvojciferným číslom, nechajte tretiu číslicu prázdnu alebo namiesto toho zadajte medzeru. Všimnite si, že táto vstupná maska neupozorňuje používateľa, ak vynechá zadávanie jednej alebo viacerých častí adresy alebo zadá iba medzery namiesto číselnej hodnoty. Príklad: "345. .3. " bude prijatá ako platná adresa.
Aký je formát zobrazenia? Keď dokončíte zadávanie a opustenie poľa, formát zobrazenia odstráni medzery v adrese a zobrazí len čísla a bodky. Takže, ak ste zadali "354.35.2.12", adresa sa zobrazí ako "354.35.2.12". Všimnite si, že ak kliknete do adresy alebo stlačíte kláves F2 (ak chcete prejsť do režimu úprav) po výbere adresy, medzery sa znova zobrazia.
Tip: Ak chcete skopírovať adresu, premiestnite sa do predchádzajúceho stĺpca alebo ovládacieho prvku, stlačením klávesu TAB vyberte formátovanú adresu a potom kliknite na položku Kopírovať. Týmto spôsobom nebudete kopírovať reťazec adresy, ktorý obsahuje medzery.
Zoradenie záznamov vo formulári alebo zostave podľa IP adries
Ak potrebujete vytvoriť formulár alebo zostavu, v ktorej sú záznamy zoradené podľa IP adries, založiť nový objekt na dotaze, ktorý zoraďuje adresy podľa vyššie popísaného postupu, a nie na tabuľke, v ktorej sú adresy uložené.