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

Забележка: Бихме искали да ви осигурим най-новото помощно съдържание възможно най-бързо на вашия собствен език. Тази страница е преведена чрез автоматизация и може да съдържа граматически грешки и несъответствия. Нашата цел е това съдържание да ви бъде полезно. Можете ли да ни кажете дали информацията е била полезна за вас, в дъното на тази страница? Ето статията на английски за бърза справка.

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

Въведение

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

MachineID

Служител

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

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

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

MachineID

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

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

MachineID

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

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

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

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

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

Ще създадете заявка за избиране с име сортиран IPAddresses, който показва записите във възходящ ред на IP адреси. Приемете, че текущата база данни има таблица с име MachineDetails, която включва текстово поле с име IPAddress.

  1. Щракнете върху Създаване на > заявка за проектиране

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

  3. Плъзнете полетата MachineID и IPAddress в мрежата за проектиране на заявки.

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

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

  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 , в число. Тази последна стъпка е необходима, защото основният тип данни е Text.

  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 , в число. Тази последна стъпка е необходима, защото основният тип данни е Text.

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

    Отново, прегледайте израза. Ключът е да намерите местоположението на третия период и след това да извлечете всички знаци, които го следват. Тъй като не знаете точно къде се намира третият период, можете да се обадите на функцията InStr три пъти, за да намерите позицията на третия период. За да изчислите броя на цифрите в четвъртата част, използвайте функцията LEN . Броят на върнатите цифри се използва с правилната функция за извличане на толкова знаци от дясната част на полето ipaddress. И накрая, можете да се обадите на функцията Val , за да преобразувате знаците, върнати от функцията MID , в число. Тази последна стъпка е необходима, защото основният тип данни е Text.

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

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

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

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

    MachineID

    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

  11. Върнете се в изглед за проектиране и изчистете квадратчето за отметка в реда Покажи на всичките четири изчисляеми колони. Това не позволява показването на изчисляемите колони в изглед на лист с данни.

  12. Ако желаете, задайте критерии за изключване на записи от заявката.

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

Още употреби за сортирани IP адреси

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

Ако искате да проверите адреси без писане на програмен текст, можете да направите това в ограничена степен, като зададете свойството InputMask на полето на # # # ## ##. # #; # # #; 0; " " и свойСтвото Format на полето IP Address към &&&&&&&&&&&&.

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

Какво прави форматът за показване? Когато приключите с въвеждането и оставите полето, форматът за показване премахва празните места в адреса и показва само числата и периодите. И така, ако сте въвели "354,35 0,2 .12", адресът се показва като "354.35.2.12". Имайте предвид, че ако щракнете в адреса или натиснете клавиша F2 (за да влезете в режим на редактиране), когато е избран адресът, интервалите ще се появят отново.

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

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

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

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

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

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

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

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

×