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

Важно :  Данная статья переведена с помощью машинного перевода, см. Отказ от ответственности. Используйте английский вариант этой статьи, который находится здесь, в качестве справочного материала.

Этот раздел посвящен процедуре сортировки IP-адресов, которые хранятся в базе данных Microsoft Office Access 2007.

В этой статье:

Общие сведения

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

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

Введение

Работать с IP-адресами несколько сложнее, чем с текстом или числами. Причина заключается в том, что IP-адрес — это ряд из четырех числовых значений, разделенных точкой (.), в котором каждое значение находится в пределах от 0 до 255. В приведенной ниже таблице приведен пример данных до сортировки.

КодКомпьютера

Сотрудник

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

IP-адрес

1

...

...

123.4.245.23

2

...

...

104.244.253.29

15

...

...

1.198.3.93

16

...

...

32.183.93.40

17

...

...

104.30.244.2

18

...

...

104.244.4.1


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

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

КодКомпьютера

IP-адрес

15

1.198.3.93

2

104.244.253.29

18

104.244.4.1

17

104.30.244.2

1

123.4.245.23

16

32.183.93.40


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

КодКомпьютера

IP-адрес

15

1.198.3.93

16

32.183.93.40

17

104.30.244.2

18

104.244.4.1

2

104.244.253.29

1

123.4.245.23


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

ЧастьI

ЧастьII

ЧастьIII

ЧастьIV

1

198

15

93

32

183

93

40

104

30

244

2

104

244

16

1

104

244

253

29

123

16

245

23


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

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

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

Необходимо создать запрос с именем «Отсортированные IP-адреса», в котором записи IP-адресов отсортированы по возрастанию. Предположим, что в текущей базе данных содержится таблица с именем «ДанныеКомпьютеров», в которую включено текстовое поле с именем «IP-адрес».

  1. На вкладке Создание в группе Другие нажмите кнопку Конструктор запросов.

  2. В диалоговом окне Добавить таблицу на вкладке Таблица щелкните таблицу ДанныеКомпьютеров, а затем нажмите кнопку Добавить. Закройте диалоговое окно.

  3. Перетащите поля «КодКомпьютера» и «IP-адрес» в бланк запроса.

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

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

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

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

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

  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)) в строке поле. Выражение возвращает знаки, расположенные между второй и третий периодов в поле IP-адрес.

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

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

    Повторно просмотрите выражение. Ключ — поиск расположения третьего периода и затем извлеките все символы, которые следуют за его. Так как вы не знаете точно третьего периода месторасположение, звонке функция InStr три раза для поиска положения третьего периода. Затем используйте функция Len вычислить количество цифр в четвертом части. Количество цифр возвращается используется с функции Right , чтобы извлечь это число знаков из правой части поля IP-адрес. Наконец вызвать функцию Val для преобразования символов, возвращаемое функцией ПСТР в число. Этот последний этап необходим из-за базовый тип данных текст.

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

    Внимание!    Строку Сортировка для столбца «IP-адрес» следует оставить пустой.

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

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

КодКомпьютера

IP-адрес

ЧастьI

ЧастьII

ЧастьIII

ЧастьIV

15

1.198.3.93

1

198

15

93

16

32.183.93.40

32

183

93

40

17

104.30.244.2

104

30

244

2

18

104.244.4.1

104

244

16

1

2

104.244.253.29

104

244

253

29

1

123.4.245.23

123

16

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

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

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

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

×