Ez a témakör az Access adatbázisban tárolt IP-címek rendezésének eljárását ismerteti.
Bevezetés
Ha IP-címekkel dolgozik, valószínűleg már tudja, hogy ez nem olyan egyszerű, mint a szöveg vagy a számok használata. Ennek az az oka, hogy az IP-címek valójában négy számértékből álló gyűjtemények, amelyeket pont (.) választ el egymástól, ahol minden érték egy 0 és 255 közötti szám. Az alábbi táblázat a rendezési sorrend alkalmazása előtti adatokat mutatja be.
Gépazonosító |
Alkalmazott |
Hely |
IP-cím |
---|---|---|---|
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 |
Az IP-címek rendezése az Accessben kihívást jelent, mivel az Access nem biztosít speciális adattípust az IP-címek tárolásához. Bár az IP-cím csak számok gyűjteménye, nem tárolhat IP-címeket numerikus mezőben. Ennek az az oka, hogy a numerikus mezők csak egyetlen tizedesvesszőt (.) támogatnak, míg az IP-címek három pontot (.) tartalmaznak. Ez azt jelenti, hogy a címeket egy szövegmezőben kell tárolnia.
Mivel az IP-címeket egy szövegmezőben tárolja, az Access beépített rendezési gombjaival nem rendezheti értelmezhető módon a címeket. A rendezési gombok mindig betűrendbe rendezik a szövegmezők értékeit, még akkor is, ha a karakterek számok. Más szóval a címeket az első számjegy, majd a második számjegy és így tovább rendezi a címeket alkotó számértékek helyett. Az alábbi táblázat az előző táblázat címeit mutatja be betűrendbe rendezve az IPAddress mezőben.
Gépazonosító |
IP-cím |
---|---|
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 |
Az 1-vel kezdődő címek a 2-vel kezdődő címek előtt jelennek meg, és így tovább. Az alábbi táblázat a megfelelő növekvő sorrendben jeleníti meg a címeket.
Gépazonosító |
IP-cím |
---|---|
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 |
A címek rendezésének lépéseinek könnyebb megértése érdekében az IP-címeket négy numerikus részre kell bontania. A címeket az első rész szerint kell rendezni, majd az első rész minden értékéhez, majd a második részhez stb. A táblázat egy másik oszlopban jeleníti meg az egyes részeket, és mivel az oszlopok egyszerű numerikus értékeket tartalmaznak, lehetővé válik az oszlopok növekvő sorrendbe rendezése balról jobbra, ahogy az alábbi táblázatban látható.
PartI |
PartII |
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 |
A négy rész külön rendezése az IP-címek rendezésének trükkje. A következő eljárásban létrehoz egy lekérdezést, amely az IP-cím mező mellett négy számított oszlopot is tartalmaz, amelyekben minden oszlop a címértékek egy részét tárolja. Az első számított oszlop a cím első numerikus részét, a második számított oszlop a cím második numerikus részét fogja tárolni, és így tovább. Ahelyett, hogy az IPAddress mező szerint rendezné a rekordokat, a lekérdezés a rekordokat a négy számított oszlop szerint rendezi.
A lekérdezés létrehozása
Létre fog hozni egy Rendezett IPAddresses nevű választó lekérdezést, amely az IP-címek növekvő sorrendjében jeleníti meg a rekordokat. Tegyük fel, hogy az aktuális adatbázis rendelkezik egy MachineDetails nevű táblával, amely tartalmaz egy IPAddress nevű szövegmezőt.
-
Kattintson a Create > Query Design (> Lekérdezéstervező létrehozása) elemre.
-
Válassza a Táblák hozzáadása (Tábla megjelenítése az Accessben) lehetőséget, és húzza a Gép részletei elemet a Tervező nézet felső szakaszára.
-
Húzza a MachineID és az IPAddress mezőket a lekérdezés tervezőrácsára.
-
Most már készen áll a számított oszlopok hozzáadására. A jobb oldali első üres oszlopba írja be a Következő kifejezést: PartI: Val(Left([IPAddress],(InStr(1,[IPAddress],".") -1))) a Mező sorban. A kifejezés az első pontot (.) megelőző karaktereket adja vissza. az IPAddress mezőben.
Most tekintse át a kifejezést. Mivel nem tudja, hány számjegyből áll a cím első része, az InStr függvénnyel megkeresheti az első pont pozícióját. Az 1 kivonása (az időszak kizárásához) az első rész számjegyeinek számát adja vissza. Ezt a számot a Left függvénnyel használva kinyerheti ezt a sok karaktert a bal szélső karaktertől kezdve az IPAddress mezőből. Végül meghívja a Val függvényt, hogy a Left függvény által visszaadott karaktereket számmá konvertálja. Ez az utolsó lépés azért szükséges, mert a mögöttes adattípus Szöveg.
-
Mentse a lekérdezést a gyorselérési eszköztárMentés gombjára kattintva. Érdemes ezt minden egyes köztes lépés után elvégezni.
-
Adja hozzá a második címrész oszlopát. A PartI jobb oldalán lévő oszlopba írja be a következőt: PartII: Val(Mid([IPAddress],InStr(1,[IPAddress],".") +1,InStr(InStr(1;[IPAddress],".") +1,[IPAddress],".") -InStr(1;[IPAddress];".") -1)) a Mező sorban. A kifejezés az IPAddress mező első és második időszaka közötti karaktereket adja vissza.
Tekintse át ismét a kifejezést. Mivel nem tudja, hogy hány számjegyből áll a cím második része, vagy hogy pontosan hol kezdődik a második rész (mivel nem tudja, hogy mennyi az első rész), az InStr függvénnyel megkeresheti az időszakok pozícióit. Ezután a Mid függvénnyel kinyerheti az első pontot követő, de a második pontot megelőző karaktereket. Végül meghívja a Val függvényt, hogy a Mid függvény által visszaadott karaktereket számmá konvertálja. Ez az utolsó lépés azért szükséges, mert a mögöttes adattípus Szöveg.
-
Adja hozzá a harmadik címrész oszlopát. A PartII jobb oldalán lévő oszlopba írja be a következőt: 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)) a Mező sorban. A kifejezés az IPAddress mező második és harmadik időszaka közötti karaktereket adja vissza.
Tekintse át ismét a kifejezést. Mivel nem tudja, hogy hány számjegyből áll a cím harmadik része, vagy hogy pontosan hol kezdődik a harmadik rész (mivel nem tudja, hogy az első és a második rész mennyi ideig tart), az InStr függvénnyel megkeresheti az időszakok pozícióit. Ezután a Mid függvénnyel kinyerheti a második pontot követő, de a harmadik pontot megelőző karaktereket. Végül meghívja a Val függvényt, hogy a Mid függvény által visszaadott karaktereket számmá konvertálja. Ez az utolsó lépés azért szükséges, mert a mögöttes adattípus Szöveg.
-
Adja hozzá a negyedik és utolsó címrész oszlopát. A PartIII jobb oldalán lévő oszlopba írja be a következőt: PartIV: Val(Right([IPAddress],Len([IPAddress])-InStr(InStr(1,[IPAddress],".") +1,[IPAddress],".") +1,[IPAddress],"."))) elemet a Mező sorban. A kifejezés az utolsó pontot követő karaktereket adja vissza.
Tekintse át ismét a kifejezést. A kulcs a harmadik pont helyének megkeresése, majd az azt követő összes karakter kinyerése. Mivel nem tudja pontosan, hol található a harmadik időszak, háromszor hívja meg az InStr függvényt a harmadik időszak pozíciójának megkereséséhez. Ezután a Len függvénnyel kiszámíthatja a negyedik rész számjegyeinek számát. A visszaadott számjegyek száma ezután a Right függvénnyel lesz felhasználva az IPAddress mező jobb oldalán található ennyi karakter kinyeréséhez. Végül meghívja a Val függvényt, hogy a Mid függvény által visszaadott karaktereket számmá konvertálja. Ez az utolsó lépés azért szükséges, mert a mögöttes adattípus Szöveg.
-
Állítsa mind a négy számított oszlop Rendezési sorát Növekvő értékre.
Fontos Az IPAddress oszlop Rendezés sorát üresen kell hagyni.
Ha más mezőértékek szerint szeretne rendezni, a címek mellett helyezze a mezőket a négy számított oszlop bal vagy jobb oldalára. Ne helyezze a többi rendezési mezőt a számított oszlopok közé.
-
A következő lépés a négy számított oszlop elrejtése az adatlapról. Mielőtt azonban ezt tenné, váltson Adatlap nézetre a számított oszlopokban lévő kifejezések eredményének megtekintéséhez. Az alábbi táblázatban az Adatlap nézetben látható oszlopok láthatók.
Gépazonosító
IP-cím
PartI
PartII
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
-
Váltson vissza Tervező nézetre, és törölje a jelet mind a négy számított oszlop Megjelenítés sorából. Ez megakadályozza, hogy a számított oszlopok Adatlap nézetben jelenjenek meg.
-
Igény szerint megadhatja a rekordok lekérdezésből való kizárásának feltételeit.
-
Váltson Adatlap nézetre a rekordok rendezett sorrendben való megtekintéséhez. A rekordokat az IP-címek növekvő sorrendje szerint fogja látni.
További használati módok a rendezett IP-címekhez
IP-címek ellenőrzése az adatbevitel során
Ha kód írása nélkül szeretné ellenőrizni a címeket, ezt korlátozott mértékben megteheti, ha a mező InputMask tulajdonságát ###.# értékre állítja; 0;" " és az IP-cím mező Formátum tulajdonságát &&&&&&&&&&&&.
Mit tesz a beviteli maszk? Amikor elkezd gépelni a címmezőbe, a beviteli maszk megakadályozza, hogy a három pont között a számoktól és szóközöktől eltérő karaktereket adjon meg. Ha egy numerikus rész kétjegyű szám, hagyja üresen a harmadik számjegyet, vagy írjon be szóközt. Vegye figyelembe, hogy ez a beviteli maszk nem figyelmezteti a felhasználót, ha kihagyja a cím egy vagy több részének beírását, vagy numerikus érték helyett csak szóközöket ír be. Például: "345. .3. " érvényes címként lesz elfogadva.
Mire használható a megjelenítési formátum? Amikor befejezte a gépelést, és elhagyja a mezőt, a megjelenítési formátum eltávolítja a címben lévő szóközöket, és csak a számokat és az időszakokat jeleníti meg. Ha tehát a "354.35 .2 .12" értéket írja be, a cím a következőként jelenik meg: "354.35.2.12". Vegye figyelembe, hogy ha a címen belülre kattint, vagy lenyomja az F2 billentyűt (a szerkesztési módba való belépéshez), amikor a cím ki van jelölve, a szóközök újra megjelennek.
Tipp: Ha egy címet szeretne másolni, lépjen az előző oszlopra vagy vezérlőelemre, a TAB billentyű lenyomásával jelölje ki a formázott címet, majd kattintson a Másolás gombra. Ezzel nem másolja a szóközöket tartalmazó címsztringet.
Rekordok rendezése űrlapon vagy jelentésben IP-címek szerint
Ha olyan űrlapot vagy jelentést kell létrehoznia, amelyben a rekordok IP-címek szerint vannak rendezve, az új objektumot egy olyan lekérdezésre kell alapoznia, amely a címeket a korábban ismertetett módon rendezi a címeket tároló tábla helyett.