Сортиране на IP адреси

Важно: Тази статия е преведена машинно – вижте отказа от отговорност. Английската версия на тази статия за справка можете да намерите тук .

Тази тема описва процедурата за сортиране на адреси на интернет протоколи (IP), съхранявани в база данни на Microsoft Office Access 2007.

В тази статия

Въведение

Създаване на заявката

Още използва за сортиране на IP адреси

Въведение

Ако работите с IP адреси, вероятно вече знаете, че не се работи просто като с текст или числа. Това е така, защото един IP адрес в действителност е колекция от четири числови стойности, разделени с точка (.), като всяка стойност представлява число между 0 и 255. Следващата таблица показва данни, преди да е приложен някакъв ред за сортиране.

ИД_машина

Служител

Местоположение

IP_адрес

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 адреси в Access е едно предизвикателство, защото Access не предоставя специален тип данни за сортиране на IP адреси. Въпреки че един IP адрес е просто колекция от числа, той не може да се съхранява в числово поле. Това е така, защото числовото поле поддържа само една десетична точка (.), докато IP адресът съдържа три точки (.). Това означава, че адресите трябва да се съхраняват в текстово поле.

Тъй като IP адресите се съхраняват в текстово поле, не може да се използват вградените бутони за сортиране в Access, за да се сортират адресите по някакъв смислен начин. Бутоните за сортиране винаги сортират стойностите в едно текстово поле по азбучен ред, дори ако знаците са числа. С други думи, адресите се сортират по първата цифра, след това по втората, и т. н., вместо по числовите стойности, които съставят адреса. Следващата таблица показва адресите от предишната таблица, сортирани по азбучен ред в полето IP_адрес.

ИД_машина

IP_адрес

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


Адресите, които започват с 1 са показани преди адресите, започващи с 2, и т. н. Следващата таблица показва адресите в правилния възходящ ред.

ИД_машина

IP_адрес

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


За да се разберат по-лесно стъпките, включени в сортирането на тези адреси, IP адресите са разбити на четири числови части. Адресите трябва да се съхраняват според първата част, след това за всяка стойност в първата част, след това според втората част, и т. н. Таблицата показва всяка част в различна колона и тъй като колоните съдържат прости числови стойности, става възможно да се сортират колоните отляво надясно по възходящ ред, както се вижда от таблицата по-долу.

ЧастI

ЧастII

ЧастIII

ЧастIV

1

198

3

93

32

183

93

40

104

30

244

2

104

244

4

1

104

244

253

29

123

4

245

23


Сортирането поотделно на четирите части е трикът при сортирането на IP адреси. При следващата процедура ще бъде създадена заявка, която освен полето с IP адреси, съдържа четири изчисляеми колони, като всяка колона съхранява част от стойностите на адресите. Първата изчисляема колона съдържа първата числова част на адреса, втората изчисляема колона съдържа втората числова част на адреса, и т. н. Вместо да сортира записите по полето на IP адресите, заявката ще сортира записите по четирите изчисляеми колони.

Най-горе на страницата

Създаване на заявка

Ще бъде създадена заявка за селектиране, наречена "Сортирани IP адреси", която показва записите във възходящ ред на IP адресите. Да приемем, че текущата база данни има таблица, наречена "Подробни данни за машината", включваща текстово поле "IP адрес".

  1. В раздела Създаване, в групата Други щракнете върху Проектиране на заявка.

  2. В диалоговия прозорец Показване на таблица, в раздела Таблици, щракнете върху Подробни данни за машината и след това щракнете върху Добави. Затворете диалоговия прозорец.

  3. Плъзнете полетата "Подробни данни за машината" и "IP адрес" в проектната мрежа на заявката.

  4. Сега сте готови да добавите изчисляеми колони. В първата празна колона отдясно, въведете израза френската: Val(Left([IPAddress],(InStr(1,[IPAddress],".") -1))) в реда поле . Изразът връща знака, предхождащ първия период (.) в полето IPAddress.

    Сега прегледайте израза. Тъй като не знаете колко цифри изграждат първата част от адреса, който използвате InStr функция, за да намерите позицията на първия период. Изваждане 1 (за да изключите периода) Връща броя на цифрите в първата част. След това можете да използвате този номер с ляв функция, за да извлечете че много знака, започвайки от-левите знаци от полето IPAddress. И накрая, се обаждате на функцията Val за преобразуване на знаците, върнат от функцията Left в число. В тази Последната стъпка е необходимо, тъй като типа на базовите данни е текст.

  5. Запишете заявката като щракнете върху Запиши в Лента с инструменти за бърз достъп. Една добра идея е да правите това след всяка междинна стъпка.

  6. Добавяне на колона за втората част на адрес. В колоната вдясно от френската, въведете PartII: Val(Mid([IPAddress],InStr(1,[IPAddress],".") +1,InStr(InStr(1,[ipaddress],".") +1,[ipaddress],".") -InStr(1,[ipaddress],".") -1)) в реда поле . Изразът връща знака, които се намират между първата и втората периода в полето IPAddress.

    Отново прегледайте израза. Тъй като не знаете колко цифри изграждат втората част от адреса или къде точно втората част стартира (защото не колко време е първата част), можете да използвате функцията InStr да намери позициите на периоди. След това използвате функция Mid да извадите знаците, които следват първият период, но започва втория период. И накрая се обаждате на функцията Val за преобразуване на знаците, върнат от функцията Mid в число. В тази Последната стъпка е необходимо, тъй като типа на базовите данни е текст.

  7. Добавяне на колона за третата част на адреса. В колоната вдясно от PartII въведете 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)) в реда поле . Изразът връща знака, които се намират между второ и трето периода в полето IPAddress.

    Отново прегледайте израза. Тъй като не знаете колко цифри съставят третата част на адреса, или къде точно започва третата част (защото не знаете колко дълги са първата и втората част), вие използвате функцията InStr, за да намерите местоположението на точките. След това използвате функцията Mid, за да извлечете знаците, които са след втората, но преди третата точка. Накрая викате функцията Val, за да конвертирате върнатите знаци от функцията Mid в число. Тази последна стъпка е необходима, защото базовите данни са от текстов тип.

  8. Добавяне на колона за четвърти и Последен адрес част. В колоната вдясно от PartIII, въведете PartIV: Val(Right([IPAddress],Len([IPAddress])-InStr(InStr(InStr(1,[IPAddress],".") +1,[ipaddress],".") +1,[ipaddress],"."))) в полето ред. Израз връща знаци, които следват последния период.

    Отново прегледайте израза. Най-важното е да намерите местоположението на третия период и след това извлечете всички знаци, които го следват. Тъй като не знаете къде точно се намира на третия период, се обаждате функция InStr три пъти, за да намерите позицията на третия период. След това използвате функцията Len за изчисляване на броя на цифрите в четвъртата част. Броят на цифрите, връща се използва с дясната функция, за да извлечете че много знаци от дясна част на полето IPAddress. И накрая се обаждате на функцията Val за преобразуване на знаците, върнат от функцията Mid в число. В тази Последната стъпка е необходимо, тъй като типа на базовите данни е текст.

  9. Задайте реда Сортиране на всичките четири изчисляеми колони като Възходящо.

    Важно    Редът Сортиране на колоната "IP_адрес" трябва да се остави празен.

    Ако искате да сортирате по други стойности на полето, освен адресите, поставете полетата или наляво, или надясно от всичките четири изчисляеми колони. Не поставяйте другите полета за сортиране между изчисляемите колони.

  10. Следващата стъпка е да скриете тези четири изчисляеми колони от таблицата с данни. Но преди да направите това, превключете в табличен изглед, за да покажете резултата от изразите в изчисляемите колони. Следващата таблица показва колоните, които ще видите в табличен изглед.

ИД_машина

IP_адрес

ЧастI

ЧастII

ЧастIII

ЧастIV

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

  1. Превключете обратно в режим на проектиране и изчистете отметката от квадратчето в реда Покажи на всичките четири колони. Това ще попречи на показването на колоните в табличен изглед.

  2. По желание може да зададете критерии за изключване на записи от заявката.

  3. Превключете в табличен изглед, за да видите записите в сортиран ред. Ще видите записите, които са правилно сортирани във възходящ ред на IP адресите.

Най-горе на страницата

Още приложения за сортираните IP адреси

Проверка на IP адресите при въвеждане на данните

Ако искате да проверите адреси без писане на код, можете да направите това в известна степен чрез настройка на свойството входна маска на полето за #. ###. ###. ##; 0; " " и свойството формат на полето IP адрес да & & & & & & & & & & & &.

Какво прави входната маска? Когато започнете въвеждането в полето на адресите, входната маска предотвратява въвеждането на знаци, които са различни от числа и интервали, между трите точки. Ако една числова част представлява число с две цифри, оставете третата цифра празна или въведете интервал. Обърнете внимание, че тази входна маска не предупреждава потребителя ако той пропусне въвеждането на една или повече части от адреса, или въведе само интервали вместо числова стойност. Например "345. .3. " би се възприел като валиден адрес.

Какво прави форматът на показване? Когато приключите с въвеждането и напуснете полето, форматът на показване премахва интервалите в адреса и показва само числата и точките. Така, ако сте въвели "354.35 .2 .12 ", адресът се показва като "354.35.2.12". Обърнете внимание, че ако щракнете върху адреса, или натиснете F2 (за да влезете в режим на редактиране), когато адресът е избран, интервалите отново ще се появят.

Съвет: Ако искате да копирате един адрес, преминете към предишната колона или контрола, натиснете TAB, за да изберете форматирания адрес, и след това щракнете върху Копирай. Когато правите това, низът на адреса няма да бъде копиран с интервалите.

Сортиране на записи във формуляр или отчет по IP адреси

Ако трябва да създадете формуляр или отчет, в който записите се сортират по IP адреси, трябва да базирате новия обект върху заявка, която сортира адресите по вече описания начин, а не върху таблицата, която съхранява адресите.

Най-горе на страницата

Забележка: Отказ от отговорност за машинен превод: Тази статия е преведена от компютърна система без човешка намеса. Microsoft предлага тези машинни преводи, за да помогне на потребителите, които не говорят английски, да се възползват от съдържанието за продукти, услуги и технологии на Microsoft. Тъй като статията е преведена машинно, е възможно да съдържа грешки в речника, синтаксиса и граматиката.

Разширете уменията си
Преглед на обучението
Получавайте първи новите функции
Присъединете се към участниците в Office Insider

Беше ли полезна тази информация?

Благодарим ви за обратната връзка!

Благодарим ви за вашата обратна връзка. Изглежда, че ще бъде полезно да ви свържем с един от нашите агенти по поддръжката на Office.

×