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

Примечание: Мы стараемся как можно оперативнее обеспечивать вас актуальными справочными материалами на вашем языке. Эта страница переведена автоматически, поэтому ее текст может содержать неточности и грамматические ошибки. Для нас важно, чтобы эта статья была вам полезна. Просим вас уделить пару секунд и сообщить, помогла ли она вам, с помощью кнопок внизу страницы. Для удобства также приводим ссылку на оригинал (на английском языке).

В этом разделе описана процедура сортировки IP-адресов, хранящихся в базе данных _з0з_ .

Введение

Если вы работаете с IP-адресами, вероятно, вам уже известно, что это не так просто, как при работе с текстом или числами. Это связано с тем, что IP-адрес фактически является коллекцией из четырех числовых значений, разделенных точкой (.), где каждое значение является числом от 0 до 255. В приведенной ниже таблице показаны данные до применения порядка сортировки.

Мачинеид

Сотрудник

Расположение

Адрес

одного

...

...

123.4.245.23

2

...

...

104.244.253.29

см

...

...

1.198.3.93

четверт

...

...

32.183.93.40

пятиконечная

...

...

104.30.244.2

6

...

...

104.244.4.1

Сортировка IP-адресов в Access является сложной задачей, так как в Access не предусмотрен специальный тип данных для хранения IP-адресов. Хотя IP-адрес — это только коллекция чисел, IP-адреса в числовом поле хранить не удается. Это связано с тем, что числовое поле поддерживает только одну десятичную запятую (.), в то время как IP-адрес состоит из трех точек (.). Это означает, что адреса необходимо хранить в текстовом поле.

Так как вы храните IP-адреса в текстовом поле, вы не можете использовать встроенные кнопки сортировки в Access, чтобы отсортировать адреса осмысленным путем. С помощью кнопок сортировки вы всегда сортируете значения в текстовом поле в алфавитном порядке, даже если это числа. Другими словами, адреса сортируются по первой цифре, затем по второй цифре и т. д., а не по числовым значениям, которые составляют адрес. В приведенной ниже таблице показаны адреса из предыдущей таблицы, отсортированные в алфавитном порядке в поле IPAddress.

Мачинеид

Адрес

см

1.198.3.93

2

104.244.253.29

6

104.244.4.1

пятиконечная

104.30.244.2

одного

123.4.245.23

четверт

32.183.93.40

Адреса, которые начинаются с 1, отображаются перед адресами, которые начинаются с 2 и т. д. В приведенной ниже таблице показаны адреса в правильном порядке по возрастанию.

Мачинеид

Адрес

см

1.198.3.93

четверт

32.183.93.40

пятиконечная

104.30.244.2

6

104.244.4.1

2

104.244.253.29

одного

123.4.245.23

Чтобы облегчить понимание этапов сортировки этих адресов, вы разбивает IP-адреса на четыре части. Адреса нужно отсортировать по первой части, а затем по каждому значению в первой части, а затем по второй и т. д. В таблице показаны все части в другом столбце, а в столбцах содержатся простые числовые значения, поэтому можно отсортировать столбцы слева направо по возрастанию, как показано в приведенной ниже таблице.

Парти

Партии

Партиии

Партив

одного

198

см

93

32

183

93

40

104

30

244

2

104

244

четверт

одного

104

244

253

29

123

четверт

245

23

Сортировка четырех частей по отдельности — это принцип сортировки IP-адресов. В приведенной ниже процедуре создается запрос, в дополнение к полю IP-адреса, включающий четыре вычисляемых столбца, в которых в каждом столбце хранятся части значений адреса. Первый вычисляемый столбец будет содержать первую цифру в адресе, второй вычисляемый столбец будет содержать вторую цифру в адресе и т. д. Вместо сортировки записей с помощью поля "IPAddress" запрос будет сортировать записи по четырем вычисляемым столбцам.

Создание запроса

Будет создан запрос на выборку с именем "отсортированный Ипаддрессес", в котором записи отображаются в порядке возрастания IP-адресов. Предполагается, что текущая база данных содержит таблицу с именем Мачинедетаилс, которая содержит текстовое поле с именем IPAddress.

  1. Выберите создать > конструктор запросов. Обратите внимание, что если вы используете Access 2007, на вкладке Создание в группе другие нажмите кнопку конструктор запросов.

  2. В диалоговом окне Добавление таблицы на вкладке таблицы выберите мачинедетаилс и нажмите кнопку Добавить. Закройте диалоговое окно.

  3. Перетащите поля "Мачинеид" и "IPAddress" в бланк запроса.

  4. Теперь вы можете добавить вычисляемые столбцы. В первом пустом столбце справа введите выражение парти: Val (Left ([IPAddress], (InStr (1, [IPAddress], ".") -1) ) в строке поля. Выражение возвращает символы, предшествующие первой точке (.) в поле IPAddress.

    Теперь проверьте выражение. Так как вы не знаете, сколько цифр состоит из первой части адреса, для поиска позиции первого периода используется функция InStr . Вычитание 1 (для исключения точки) возвращает количество цифр в первой части. Затем используйте этот номер с функцией Left , чтобы извлечь это количество, начиная с первого знака в поле IPAddress. Наконец, вызовите функцию Val , чтобы преобразовать символы, возвращенные функцией Left в число. Этот последний шаг необходим, так как базовым типом данных является Text.

  5. Сохраните запрос, нажав кнопку сохранить на панели быстрого доступа. Это желательно делать после каждого промежуточного шага.

  6. Добавьте столбец для второй части адреса. В столбце, расположенном справа от парти, введите партии: Val (MID ([IPAddress], InStr (1, [IPAddress], ".") + 1, InStr (1; [IPAddress]; ".") + 1, [IPAddress], ".") -InStr (1; [IPAddress]; ".") -1) в строке " поле ". Выражение возвращает символы, которые находятся между первой и второй точками в поле IPAddress.

    Проверьте выражение. Так как вы не знаете, сколько цифр состоит из второй части адреса или именно для начала второй части (так как вы не дойдете до первой части), используйте функцию InStr для поиска позиций периодов. Затем используйте функцию MID для извлечения символов, которые следуют за первым периодом, но перед вторым. Наконец, вызовите функцию Val , чтобы преобразовать символы, возвращенные функцией MID , в число. Этот последний шаг необходим, так как базовым типом данных является Text.

  7. Добавьте столбец для третьей части адреса. В столбце, расположенном справа от партии, введите партиии: Val (MID ([IPAddress], InStr (1, [IPAddress], ".") + 1, [IPAddress], ".") + 1, InStr (InStr (1; [IPAddress], ".") + 1, [IPAddress], ".") + 1, [IPAddress], ".") -InStr (InStr (1; [IPAddress]; ".") + 1, [IPAddress], ".") -1) в строке " поле ". Выражение возвращает символы, которые находятся между вторым и третьим периодами в поле IPAddress.

    Проверьте выражение. Так как вы не знаете, сколько цифр состоит из третьей части адреса или именно в том месте, где начинается третья часть (так как вы не знаете, как долго первая и вторая части), используйте функцию InStr для поиска позиций периодов. Затем используйте функцию MID для извлечения символов, которые следуют за вторым, но перед третьим периодом. Наконец, вызовите функцию Val , чтобы преобразовать символы, возвращенные функцией MID , в число. Этот последний шаг необходим, так как базовым типом данных является Text.

  8. Добавьте столбец для четвертой и конечной части адреса. В столбце, расположенном справа от партиии, введите партив: Val (Right ([IPAddress], ДЛСТР ([IPAddress])-InStr (InStr (1, [IPAddress], ".") + 1, [IPAddress], ".") + 1, [IPAddress], ".") ) в строке поля. Выражение возвращает символы, которые следуют за последним периодом.

    Проверьте выражение. Ключом является поиск местоположения третьего периода и извлечение всех символов, которые следуют за ним. Так как вы не знаете точно, где находится третий период, вызовите функцию InStr три раза, чтобы найти позицию третьего периода. Затем используется функция ДЛСТР для подсчета количества цифр в четвертой части. Число возвращаемых разрядов затем используется с функцией ПРАВСИМВ для извлечения этого числа знаков из правой части поля IPAddress. Наконец, вызовите функцию Val , чтобы преобразовать символы, возвращенные функцией MID , в число. Этот последний шаг необходим, так как базовым типом данных является Text.

  9. Установите в строке сортировки для всех четырех вычисляемых столбцов сортировку по возрастанию.

    Важные    Строка сортировки в столбце IPAddress должна быть пустой.

    Если вы хотите выполнить сортировку по другим значениям полей, в дополнение к адресам разместите поля слева или справа от всех четырех вычисляемых столбцов. Не размещайте другие поля для сортировки между вычисляемыми столбцами.

  10. Следующий шаг — скрыть четыре вычисляемых столбца из таблицы. Но перед тем, как это сделать, переключитесь в режим таблицы, чтобы увидеть результат выражения в вычисляемых столбцах. В приведенной ниже таблице показаны столбцы, которые будут отображаться в режиме таблицы.

    Мачинеид

    Адрес

    Парти

    Партии

    Партиии

    Партив

    см

    1.198.3.93

    одного

    198

    см

    93

    четверт

    32.183.93.40

    32

    183

    93

    40

    пятиконечная

    104.30.244.2

    104

    30

    244

    2

    6

    104.244.4.1

    104

    244

    четверт

    одного

    2

    104.244.253.29

    104

    244

    253

    29

    одного

    123.4.245.23

    123

    четверт

    245

    23

  11. Вернитесь в режим конструктора и снимите флажок в строке Показать всех четырех вычисляемых столбцов. В результате вычисляемые столбцы не будут отображаться в режиме таблицы.

  12. Кроме того, можно указать условия для исключения записей из запроса.

  13. Переключитесь в режим таблицы, чтобы просмотреть записи в отсортированном порядке. Вы увидите записи, отсортированные в порядке возрастания IP-адресов.

Другие способы использования сортировки IP-адресов

Проверка IP-адресов во время ввода данных

Если вы хотите проверить адреса без написания кода, можно сделать это в ограниченном экстенте, установив свойство " Маска ввода " в поле # # #### # # # # # ## # #; 0; " " и свойству Формат поля IP-адреса:" & & & "и" & "и" & ".

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

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

Совет: Если вы хотите скопировать адрес, перейти к предыдущему столбцу или элементу управления, нажмите клавишу TAB, чтобы выбрать отформатированный адрес, и выберите команду Копировать. Таким образом, строка адреса, содержащая пробелы, не будет скопирована.

Сортировка записей в форме или отчете по IP-адресам

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

К началу страницы

Совершенствование навыков работы с Office
Перейти к обучению
Первоочередный доступ к новым возможностям
Присоединиться к программе предварительной оценки Office

Были ли сведения полезными?

Спасибо за ваш отзыв!

Благодарим за отзыв! Возможно, будет полезно связать вас с одним из наших специалистов службы поддержки Office.

×