Šajā tēmā ir aprakstīta procedūra interneta protokola (IP) adrešu kārtošanai, kas tiek glabātas Access bāzē.
Ievads
Ja strādājat ar IP adresēm, iespējams jau zināt, ka tas nav tik vienkārši kā darbs ar tekstu vai skaitļiem. Tas ir tāpēc, ka IP adrese patiesībā ir četru skaitlisku vērtību kolekcija, kas atdalītas ar punktu (.), kur katra vērtība ir skaitlis no 0 līdz 255. Šajā tabulā ir redzami dati, pirms tiek lietota kārtošanas secība.
Datora ID |
Darbinieks |
Atrašanās vieta |
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 |
IP adrešu kārtošana programmā Access ir izaicinājums, jo Access nenodrošina īpašu datu tipu IP adrešu glabāšanai. Lai gan IP adrese ir tikai skaitļu kolekcija, IP adreses nevar saglabāt skaitliskā laukā. Tas ir tāpēc, ka skaitlisks lauks atbalsta tikai vienu decimālzīmi (.), bet IP adrese ietver trīs punktus (.). Tas nozīmē, ka adreses ir jāglabā teksta laukā.
Tā kā IP adreses tiek glabātas teksta laukā, programmā Access nevar izmantot iebūvētās kārtošanas pogas, lai kārtotu adreses jēgpilnā veidā. Kārtošanas pogas vienmēr kārto vērtības teksta laukā alfabētiskā secībā pat tad, ja rakstzīmes ir skaitļi. Citiem vārdiem sakot, adreses tiek sakārtotas pēc pirmā cipara, pēc tam pēc otrā cipara utt., nevis pēc skaitliskajām vērtībām, kas veido adresi. Tālāk esošajā tabulā redzamas adreses no iepriekšējās tabulas, kas sakārtotas alfabētiskā secībā laukā IPAddress.
Datora ID |
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 |
Adreses, kas sākas ar 1, tiek parādītas pirms adresēm, kas sākas ar 2 utt. Šajā tabulā adreses ir parādītas pareizā augošā secībā.
Datora ID |
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 |
Lai būtu vieglāk saprast, kādas darbības jāveic, kārtojot šīs adreses, IP adreses tiek sadalītas četrās skaitliskās daļās. Adreses ir jāsakārto pēc pirmās daļas, pēc tam katrai vērtībai pirmajā daļā, pēc tam pēc otrās daļas utt. Tabulā katra daļa tiek rādīta citā kolonnā, un, tā kā kolonnās ir vienkāršas skaitliskas vērtības, kolonnas var kārtot augošā secībā no kreisās puses uz labo, kā parādīts tālāk esošajā tabulā.
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 |
Kārtojot četras daļas atsevišķi, ir sarežģītākā IP adrešu kārtošana. Tālākajā procedūrā tiek izveidots vaicājums, kurā papildus IP adreses laukam iekļautas četras aprēķinātās kolonnas, kurās katrā kolonnā tiek glabāta daļa no adrešu vērtībām. Pirmajā aprēķinātajā kolonnā būs pirmā aprēķinātā kolonnas adrese, otrajā aprēķinātajā kolonnā būs otra adreses skaitliskā daļa utt. Tā vietā, lai kārtotu ierakstus pēc lauka IPAddress, vaicājums kārtos ierakstus pēc četrām aprēķinātajām kolonnām.
Vaicājuma izveide
Izveidojiet atlases vaicājumu ar nosaukumu Kārtotās IPAdreses, kurā ieraksti tiek rādīti augošā IP adrešu secībā. Pieņemsim, ka pašreizējā datu bāzē ir tabula ar nosaukumu MachineDetails, kurā ir teksta lauks ar nosaukumu IPAddress.
-
Noklikšķiniet uz > Noformējuma izveide.
-
Atlasiet Pievienot tabulas (Rādīt tabulu programmā Access) un velciet Datora informācija uz noformējuma skata augšējo sadaļu.
-
Velciet laukus MachineID un IPAddress uz vaicājuma noformējuma režģi.
-
Tagad varat pievienot aprēķinātās kolonnas. Pirmajā tukšajā kolonnā labajā pusē ierakstiet izteiksmi PartI: Val(Left([IPAddress],(InStr(1,[IPAddress],".") -1)))rindā Lauks. Izteiksme atgriež rakstzīmes, kas atrodas pirms pirmā perioda (.), laukā IPAddress.
Tagad pārskatiet izteiksmi. Tā kā nezināt, cik ciparu veido adreses pirmā daļa, izmantojiet InStr funkciju, lai atrastu pirmā perioda pozīciju. Atņemot 1 (lai izslēgtu punktu), tiek atgriezts ciparu skaits pirmajā daļā. Pēc tam šo skaitli izmanto ar funkciju Left , lai izvilktu daudz rakstzīmju, sākot no kreisās puses pēdējās rakstzīmes, no lauka IPAddress. Visbeidzot ir jāzvana funkcijai Val , lai funkcijas Left atgrieztās rakstzīmes pārvērstu par skaitli. Šī pēdējā darbība ir nepieciešama, jo pamatā esošais datu tips ir Teksts.
-
Saglabājiet vaicājumu, ātrās piekļuves rīkjoslānoklikšķinot uz Saglabāt. To ir ieteicams izdarīt pēc katras starpsoļa.
-
Pievienojiet otrās adreses daļas kolonnu. Kolonnā pa labi no PartI ierakstiet PartII: Val(Mid([IPAddress],InStr(1,[IPAddress],".") +1,InStr(InStr(1,[IPAddress],".") +1,[IPAddress],".") -InStr(1,[IPAddress],".") -1))rindā Lauks . Izteiksme atgriež rakstzīmes, kas atrodas starp pirmo un otro periodu laukā IPAddress.
Vēlreiz pārskatiet izteiksmi. Tā kā nezināt, cik ciparu veido adreses otro daļu vai tieši tā sākas otrā daļa (jo nav zināms, cik gara ir pirmā daļa), izmantojiet funkciju InStr , lai atrastu periodu pozīcijas. Pēc tam izmantojiet funkciju Mid , lai izvilktu rakstzīmes, kas seko pēc pirmā perioda, bet atrodas pirms otrā perioda. Visbeidzot ir jāzvana funkcijai Val , lai funkcijas Mid atgrieztās rakstzīmes pārvērstu par skaitli. Šī pēdējā darbība ir nepieciešama, jo pamatā esošais datu tips ir Teksts.
-
Pievienojiet trešās adreses daļas kolonnu. Kolonnā pa labi no PartII ierakstiet 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))rindā Lauks . Izteiksme atgriež rakstzīmes, kas atrodas starp otro un trešo periodu laukā IPAddress.
Vēlreiz pārskatiet izteiksmi. Tā kā nezināt, cik ciparu veido adreses trešo daļu vai tieši trešo daļu sāk (jo nezināt, cik gara ir pirmā un otrā daļa), izmantojiet funkciju InStr , lai atrastu periodu pozīcijas. Pēc tam izmantojiet funkciju Mid , lai izvilktu rakstzīmes, kas seko otrajam periodam, bet ir pirms trešā perioda. Visbeidzot ir jāzvana funkcijai Val , lai funkcijas Mid atgrieztās rakstzīmes pārvērstu par skaitli. Šī pēdējā darbība ir nepieciešama, jo pamatā esošais datu tips ir Teksts.
-
Pievienojiet ceturtās un pēdējās adreses daļas kolonnu. Kolonnā pa labi no PartIII ierakstiet PartIV: Val(Right([IPAddress],Len([IPAddress])-InStr(InStr(1,[IPAddress],".") +1,[IPAddress],".") +1,[IPAddress],"."))) . Izteiksme atgriež rakstzīmes, kas ir pēc pēdējā perioda.
Vēlreiz pārskatiet izteiksmi. Atslēga ir trešā perioda atrašanās vietas atrašana un pēc tam izgūt visas tam seko norādītās rakstzīmes. Tā kā jūs precīzi nezināt trešā perioda atrašanās vietu, trīs reizes izsauciet InStr funkciju, lai atrastu trešā perioda pozīciju. Pēc tam tiek izmantota funkcija Len , lai aprēķinātu ciparu skaitu ceturtajā daļā. Pēc tam tiek izmantots atgriezto ciparu skaits ar funkciju Right , lai izvilktu daudzas rakstzīmes no lauka IPAddress labās daļas. Visbeidzot ir jāzvana funkcijai Val , lai funkcijas Mid atgrieztās rakstzīmes pārvērstu par skaitli. Šī pēdējā darbība ir nepieciešama, jo pamatā esošais datu tips ir Teksts.
-
Visu četru aprēķināto kolonnu kārtošanas rindas iestatīšanai uz Augošā secībā.
Svarīgi! IpAddress kolonnas kārtošanas rindai jābūt tukšai.
Ja vēlaties kārtot pēc citām lauku vērtībām, papildus adresēm novietojiet laukus pa kreisi vai pa labi no visām četrām aprēķinātajām kolonnām. Pārējos kārtošanas laukus starp aprēķinātajām kolonnām nenovietojiet.
-
Nākamā darbība ir paslēpt četras aprēķinātās kolonnas no datu lapas. Taču, pirms šīs darbības pārslēdzieties uz datu lapas skatu, lai skatītu izteiksmju rezultātu aprēķinātās kolonnās. Šajā tabulā ir redzamas kolonnas, kas būs redzamas datu lapas skatā.
Datora ID
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
-
Pārslēdzieties atpakaļ uz noformējuma skatu un notīriet izvēles rūtiņu visu četru aprēķināto kolonnu rindā Rādīt. Šādi aprēķinātās kolonnas netiek rādītas datu lapas skatā.
-
Varat arī norādīt kritērijus ierakstu izslēgšanai no vaicājuma.
-
Pārslēdzieties uz datu lapas skatu, lai skatītu ierakstus sakārtotā secībā. Redzēsit ierakstus pareizi sakārtotus IP adrešu augošā secībā.
Citi sakārtotu IP adrešu izmantošanas veidi
IP adrešu validācija datu ievades laikā
Ja vēlaties validēt adreses bez koda rakstīšanas, varat to ierobežot, iestatot lauka rekvizītu InputMask uz ###.####.####.##### 0;" " un rekvizītu Format , kas atrodas IP adreses laukā &&&&&&&&&&&&.
Ko dara ievades maska? Sākot rakstīt adreses laukā, ievades maska neļauj starp šiem trim punktiem ievadīt rakstzīmes, kas nav cipari, un atstarpes. Ja skaitliskā daļa ir divciparu skaitlis, atstājiet trešo ciparu tukšu vai ievadiet atstarpi. Ņemiet vērā, ka šī ievades maska nebrīdina lietotāju, ja viņš izlaiž vienu vai vairākas adreses daļas vai ievada tikai atstarpes, nevis skaitlisku vērtību. Piemēram, "345. .3. " tiks pieņemts kā derīga adrese.
Kādas ir attēlojuma formāta darbības? Kad esat pabeidzis rakstīt un atstāt lauku, parādīšanas formātā tiek noņemtas atstarpes adresē, un tiek parādīti tikai cipari un punkti. Tāpēc, ja ievadīsiet "354.35.2.12", adrese tiek parādīta kā "354.35.2.12". Ievērojiet, ka, noklikšķinot uz adreses vai nospiežot taustiņu F2 (lai atvērtu rediģēšanas režīmu), kad adrese ir atlasīta, atkal būs atstarpes.
Padoms.: Ja vēlaties kopēt adresi, pārejiet uz iepriekšējo kolonnu vai vadīklu, nospiediet taustiņu TAB, lai atlasītu formatēto adresi, un pēc tam noklikšķiniet uz Kopēt. To darot, netiks kopēta adreses virkne, kurā ir atstarpes.
Ierakstu kārtošana formā vai atskaitē pēc IP adresēm
Ja ir jāizveido forma vai atskaite, kurā ieraksti tiek kārtoti pēc IP adresēm, izveidojiet jaunu objektu, izmantojot vaicājumu, kas kārto iepriekš aprakstītās adreses, nevis tabulā, kurā tiek glabātas adreses.