Šioje temoje aprašoma interneto protokolo (IP) adresų, saugomų Access duomenų bazėje, rūšiavimo procedūra.
Įžanga
Jei dirbate su IP adresais, tikriausiai jau žinote, kad tai nėra taip paprasta, kaip dirbti su tekstu ar skaičiais. Taip yra todėl, kad IP adresas iš tikrųjų yra keturių skaitinių reikšmių rinkinys, atskirtas tašku (.), kur kiekviena reikšmė yra skaičius nuo 0 iki 255. Šioje lentelėje rodomi duomenys prieš taikant bet kokią rikiavimo tvarką.
Įrenginio ID |
Darbuotojas |
Vieta |
IP Adresas |
---|---|---|---|
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 |
IP adresų rūšiavimas programoje "Access" yra iššūkis, nes "Access" nepateikia specialaus duomenų tipo IP adresams saugoti. Nors IP adresas yra tik skaičių rinkinys, IP adresų negalima saugoti skaitinėje lauke. Taip yra todėl, kad skaitinis laukas palaiko tik vieną dešimtainį kablelį (.), o IP adresą sudaro trys taškai (.). Tai reiškia, kad adresus turite saugoti teksto lauke.
IP adresus saugote teksto lauke, todėl negalite naudoti įtaisytųjų rūšiavimo mygtukų programoje "Access", kad adresai būtų rikiuojami prasmingai. Rūšiavimo mygtukai visada rikiuoja reikšmes teksto lauke abėcėlės tvarka, net jei simboliai yra skaičiai. Kitaip tariant, adresai rikiuojami pagal pirmąjį skaitmenį, tada pagal antrąjį skaitmenį ir t. t., o ne pagal skaitines reikšmes, kurios sudaro adresą. Šioje lentelėje rodomi adresai iš ankstesnės lentelės, surūšiuoti abėcėlės tvarka lauke IPAddress.
Įrenginio ID |
IP Adresas |
---|---|
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 |
Adresai, prasidedantys 1, rodomi prieš adresus, kurie prasideda 2 ir t. t. Šioje lentelėje adresai rodomi teisinga didėjimo tvarka.
Įrenginio ID |
IP Adresas |
---|---|
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 |
Kad būtų lengviau suprasti, kokius veiksmus reikia atlikti rūšiuojant šiuos adresus, SUskaidykite IP adresus į keturias skaitines dalis. Adresai turi būti rikiuojami pagal pirmąją dalį, tada pagal kiekvieną reikšmę pirmoje dalyje, tada pagal antrą dalį ir t. t. Lentelėje kiekviena skirtingo stulpelio dalis rodoma, o stulpeliuose yra paprastų skaitinių reikšmių, todėl galima rikiuoti stulpelius iš kairės į dešinę didėjimo tvarka, kaip parodyta toliau pateiktoje lentelėje.
Dalies I dalis |
DalisII |
DalisIII |
DaliesIV |
---|---|---|---|
1 |
198 |
3 |
93 |
32 |
183 |
93 |
40 |
104 |
30 |
244 |
2 |
104 |
244 |
4 |
1 |
104 |
244 |
253 |
29 |
123 |
4 |
245 |
23 |
Keturių dalių rūšiavimas atskirai yra gudrybė už IP adresų rikiavimo. Tolesnėje procedūroje sukuriate užklausą, kurioje, be IP adreso lauko, yra keturi apskaičiuojamieji stulpeliai, kuriuose kiekviename stulpelyje saugoma adreso reikšmių dalis. Pirmajame apskaičiuotame stulpelyje bus pirmoji skaitinė adreso dalis, antrame apskaičiuotame stulpelyje bus antroji skaitinė adreso dalis ir t. t. Užuot rūšiavus įrašus pagal lauką IPAddress, užklausa rikiuos įrašus pagal keturis apskaičiuojamuosius stulpelius.
Užklausos kūrimas
Sukursite išrinkimo užklausą, pavadintą Surikiuoti IPAddresses, kuri rodo įrašus IP adresų didėjimo tvarka. Tarkime, kad dabartinėje duomenų bazėje yra lentelė pavadinimu MachineDetails, kurioje yra teksto laukas IPAddress.
-
Spustelėkite Kurti > Užklausa Dizainas.
-
Pasirinkite Įtraukti lentelių (rodyti lentelę programoje "Access") ir nuvilkite kompiuterio informaciją į viršutinę dizaino rodinio sekciją.
-
Vilkite laukus MachineID ir IPAddress į užklausos dizaino tinklelį.
-
Dabar esate pasirengę įtraukti apskaičiuotuosius stulpelius. Pirmame tuščiame stulpelyje dešinėje įveskite reiškinį PartI: Val(Left([IPAddress],(InStr(1,[IPAddress],".") -1))) eilutėje Laukas . Reiškinys pateikia simbolius prieš pirmąjį tašką (.) lauke IPAddress.
Dabar peržiūrėkite reiškinį. Kadangi nežinote, kiek skaitmenų sudaro pirmoji adreso dalis, naudojate funkciją InStr pirmojo laikotarpio pozicijai rasti. Atimant 1 (norint neįtraukti taško) grąžinamas pirmosios dalies skaitmenų skaičius. Tada naudokite šį skaičių su funkcija Left , kad išskleistumėte tiek simbolių, pradedant nuo kairiausio simbolio, iš lauko IPAddress. Galiausiai, iškviečiate funkciją "Val ", kad konvertuotumėte simbolius, kuriuos grąžina funkcija Left , į skaičių. Šis paskutinis veiksmas būtinas, nes esamas duomenų tipas yra Tekstas.
-
Įrašykite užklausą sparčiosios prieigos įrankių juostoje spustelėdami Įrašyti. Gera mintis tai padaryti po kiekvieno tarpinio žingsnio.
-
Įtraukite antros adreso dalies stulpelį. Stulpelyje, esančiame į dešinę nuo DaliesI, įveskite PartII: Val(Mid([IPAddress],InStr(1,[IPAddress],".") +1,InStr(InStr(1,[IPAddress],".") +1,[IPAddress],".") -InStr(1,[IPAddress],".") -1)) eilutėje Laukas . Reiškinys pateikia simbolius, kurie yra tarp pirmojo ir antrojo taškų lauke IPAddress.
Dar kartą peržiūrėkite reiškinį. Kadangi nežinote, kiek skaitmenų sudaro antroji adreso dalis arba kur tiksliai prasideda antroji dalis (nes nežinote, kiek laiko yra pirmoji dalis), naudojate funkciją InStr , kad rastumėte taškų pozicijas. Tada naudokite funkciją Mid , kad išskleistumėte simbolius, einančius po pirmojo, bet prieš antrąjį tašką. Galiausiai, iškviečiate funkciją "Val ", kad konvertuotumėte simbolius, kuriuos grąžina funkcija Mid , į skaičių. Šis paskutinis veiksmas būtinas, nes esamas duomenų tipas yra Tekstas.
-
Įtraukite trečiosios adreso dalies stulpelį. Stulpelyje, esančiame į dešinę nuo DaliesII, įveskite 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)) eilutėje Laukas . Reiškinys pateikia simbolius, kurie yra tarp antrojo ir trečiojo taškų lauke IPAddress.
Dar kartą peržiūrėkite reiškinį. Kadangi nežinote, kiek skaitmenų sudaro trečia adreso dalis arba kur tiksliai prasideda trečioji dalis (nes nežinote, kiek yra pirmosios ir antrosios dalys), naudojate funkciją InStr , kad rastumėte laikotarpių pozicijas. Tada naudokite funkciją Mid , kad išskleistumėte simbolius, einančius po antrojo, bet prieš trečiąjį tašką. Galiausiai, iškviečiate funkciją "Val ", kad konvertuotumėte simbolius, kuriuos grąžina funkcija Mid , į skaičių. Šis paskutinis veiksmas būtinas, nes esamas duomenų tipas yra Tekstas.
-
Įtraukite ketvirtosios ir galutinės adreso dalies stulpelį. Stulpelyje, esančiame į dešinę nuo PartIII, įveskite PartIV: Val(Right([IPAddress],Len([IPAddress])-InStr(InStr(InStr(1,[IPAddress],".") +1,[IPAddress],".") +1,[IPAddress],"."))) eilutėje Laukas . Reiškinys pateikia simbolius, einančius po paskutinio taško.
Dar kartą peržiūrėkite reiškinį. Svarbiausia rasti trečiojo taško vietą ir išskleisti visus po jo einančius simbolius. Kadangi tiksliai nežinote, kur yra trečiasis laikotarpis, tris kartus iškviečiate funkciją InStr , kad sužinotumėte trečiojo laikotarpio padėtį. Tada naudokite funkciją Len , kad apskaičiuotumėte ketvirtosios dalies skaitmenų skaičių. Grąžintų skaitmenų skaičius naudojamas su funkcija Right , kad būtų išskleisti tiek simbolių iš dešinės IPAddress lauko dalies. Galiausiai, iškviečiate funkciją "Val ", kad konvertuotumėte simbolius, kuriuos grąžina funkcija Mid , į skaičių. Šis paskutinis veiksmas būtinas, nes esamas duomenų tipas yra Tekstas.
-
Nustatykite visų keturių apskaičiuotųjų stulpelių eilutę Rikiuoti kaip Didėjimo tvarka.
Svarbu neberekomenduojame naudoti „Visio Services“ ir „Visio Web Access" puslapio dalies „SharePoint Online“. Stulpelio IPAddress eilutė Rūšiuoti turi būti palikta tuščia.
Jei norite rikiuoti pagal kitas laukų reikšmes, ne tik adresus, perkelkite laukus į kairę arba į dešinę nuo visų keturių apskaičiuotųjų stulpelių. Nedėkite kitų rūšiavimo laukų tarp apskaičiuojamųjų stulpelių.
-
Kitas veiksmas yra paslėpti keturis apskaičiuojamuosius stulpelius duomenų lape. Tačiau prieš tai darydami įjunkite rodinį Duomenų lapas, kad matytumėte reiškinių rezultatą apskaičiuojauosiuose stulpeliuose. Šioje lentelėje rodomi stulpeliai, kuriuos matysite duomenų lapo rodinyje.
Įrenginio ID
IP Adresas
Dalies I dalis
DalisII
DalisIII
DaliesIV
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
-
Grįžkite į dizaino rodinį ir išvalykite visų keturių apskaičiuojamųjų stulpelių eilutės Rodyti žymės langelį. Tokiu būdu apskaičiuojamieji stulpeliai negali būti rodomi duomenų lapo rodinyje.
-
Jei norite, nurodykite kriterijus, kaip neįtraukti įrašų į užklausą.
-
Įjunkite duomenų lapo rodinį, kad įrašai būtų rodomi surikiuota tvarka. Įrašus matysite tinkamai surikiuotus IP adresų didėjimo tvarka.
Daugiau surūšiuotų IP adresų naudojimo vietų
IP adresų tikrinimas įvedant duomenis
Jei norite patikrinti adresus nerašydami kodo, tai galite padaryti šiek tiek nustatydami lauko ypatybę InputMask kaip ###.###.###.###.####; 0;" ir IP adreso lauko ypatybę Format , kad &&&&&&&&&&&&.
Ką daro įvesties šablonas? Pradėjus vesti tekstą adreso lauke, įvesties šablonas neleidžia įvesti simbolių, išskyrus skaičius ir tarpus tarp šių trijų taškų. Jei skaitinė dalis yra dviženklis skaičius, trečiąjį skaitmenį palikite tuščią arba įveskite tarpą. Atkreipkite dėmesį, kad šis įvesties šablonas neįspėja vartotojo, jei jis praleidžia vienos ar kelių adreso dalių įvedimą arba vietoj skaitinės reikšmės įveda tik tarpus. Pavyzdžiui, "345. .3. būtų priimtas kaip galiojantis adresas.
Ką daro rodymo formatas? Kai baigsite įvesti tekstą ir paliksite lauką, rodymo formatas pašalins tarpus iš adreso ir rodys tik skaičius ir laikotarpius. Taigi, jei įvedėte "354.35 .2.12", adresas rodomas kaip "354.35.2.12". Atkreipkite dėmesį, kad jei spustelėsite adreso viduje arba paspausite F2 (norėdami įjungti redagavimo režimą), kai adresas bus pažymėtas, tarpai vėl atsiras.
Patarimas: Jei norite kopijuoti adresą, pereikite į ankstesnį stulpelį arba valdiklį, paspauskite TAB, kad pasirinktumėte suformatuotą adresą, tada spustelėkite Kopijuoti. Tokiu būdu nekopijuosite adreso eilutės, kurioje yra tarpų.
Formos arba ataskaitos įrašų rikiavimas pagal IP adresus
Jei reikia sukurti formą arba ataskaitą, kurioje įrašai rūšiuojami pagal IP adresus, kurkite naują objektą pagal užklausą, kuri rūšiuoja adresus, kaip aprašyta anksčiau, o ne lentelėje, kurioje saugomi adresai.