Функція InStr. Функция access instr


InStr - Visual Basic - Функции Visual Basic 5.0/6.0 - Справочники для программистов

Функции Visual Basic 5.0/6.0

InStr  

Описание

Функция возвращает позицию первого вхождения указанной последовательности символов в другой последовательности символов. Для поиска последовательности символов с конца строки можно использовать функцию InStrRev.

Синтаксис

InStr([Start], String1, String2[, Compare])

Параметры

Start - числовое выражение, указывающее номер позиции, с которой должен начинаться поиск. По умолчанию поиск начинается с первого символа.String1 - строковое выражение, представляющее собой строку, в которой производится поиск.String2 - строковое выражение, представляющее собой искомую строку.Compare - указывает метод сравнения.

Параметр Compare может принимать следующие значения:

КонстантаЗначениеОписание
vbUseCompareOption-1Используется метод сравнения заданный оператором Option Compare
vbBinaryCompare0Выполняется двоичное сравнение
vbTextCompare1Выполняетеся посимвольное сравнение
vbDatabaseCompare2Сравнение осуществляется в зависимости от параметров установленных в базы данных MS Access

Возвращаемые значения

Возвращает значение типа Variant (Long).Если параметр String1 или String2 равны Null, функция возвращает Null. Если Start больше длины String2 или искомая строка не найдена, функция возвращает 0. Если Start или Compare равны Null, возникает ошибка выполнения.

Примечание

Если указан параметр Compare, то параметр Start должен быть указан обязательно.

Пример использования

Private Sub Form_Load() 'выводим в окно отладки позицию слова 'тест' Debug.Print InStr(1, "Это текст, " & _ "где мы будем искать слово 'тест', кстати, " & _ "функция возвратит 39", "тест") End Sub См. также: Array, Asc, Choose, Chr, Filter, InStrRev, Join, LBound, LCase, Left, Len, LTrim, Mid, Replace, Right, RTrim, Space, Spc, Split, StrComp, StrConv, String, StrReverse, Switch, Tab, Trim, UBound, UCase

kbyte.ru

Функція InStr - Access

Примітка.: Ми хочемо надавати найновіший вміст довідки рідною мовою користувачів якомога швидше. Цю сторінку перекладено за допомогою засобу автоматичного перекладу, тому вона може містити смислові, синтаксичні або граматичні помилки. Ми вважаємо, що цей вміст стане вам у пригоді. Повідомте нас, чи була інформація корисною, унизу цієї сторінки. Для зручності цю статтю можна переглянути англійською мовою.

Повертає значення типу Variant (Long), яке задає положення першого входження одного рядка всередині іншого.

Див. приклади

Синтаксис

InStr ([start, ] string1, string2 [, compare ] )

Синтаксис функції InStr має такі аргументи:

Аргумент

Опис

start

Необов’язковий аргумент. Числовий вираз, який задає початкове положення для кожного пошуку. Якщо його не задано, пошук починається з першого символу. Якщо аргумент start містить Null-значення, стається помилка. Аргумент start є обов’язковим, якщо задано аргумент compare.

string1

Обов’язковий аргумент. Рядковий вираз, який потрібно знайти.

string2

Обов’язковий аргумент. Шуканий рядковий вираз.

compare

Необов’язковий аргумент. Визначає тип порівняння рядків. Якщо аргумент compare має Null-значення, стається помилка. Якщо аргумент compare не задано, параметр OptionCompare визначає тип порівняння. Укажіть дійсний код мови (LocaleID), щоб використовувати спеціальні мовні правила для порівняння.

Порада.: В Access 2010 у побудовнику виразів є функція IntelliSense, за допомогою якої можна дізнатися, які аргументи необхідні для виразу. 

Параметри

Параметри аргументу compare:

Константа

Значення

Опис

vbUseCompareOption

–1

Виконує порівняння за допомогою параметра оператора Option Compare.

vbBinaryCompare

0

Виконує двійкове порівняння.

vbTextCompare

1

Виконує текстове порівняння.

vbDatabaseCompare

2

Лише для Microsoft Office Access 2007. Виконує порівняння на основі відомостей у базі даних.

Значення, що повертаються

Умова

Значення, яке повертає функція InStr

string1 має нульову довжину

0

string1 має Null-значення

Null-значення

string2 має нульову довжину

start

string2 має Null-значення

Null-значення

string2 не знайдено

0

string2 знайдено в string1

Положення, у якому знайдено збіг

start > string2

0

Примітки

Функція InStrB використовується з даними типу "байт", що містяться в рядку. Функція InStrB повертає не положення символу першого входження одного рядка в іншому, а положення даних типу "байт".

Приклади

Використання функції InStr у виразі    Функцію InStr можна використовувати будь-де, де можна використовувати вирази. Наприклад, якщо потрібно знайти положення першої крапки (.) у полі, яке містить IP-адреси (під назвою IPAddress), можна скористатися функцією InStr, як-от:

InStr(1,[IPAddress],".")

Функція InStr аналізує кожне значення в полі IPAddress і повертає положення першої крапки. Отже, якщо перша частина IP-адреси – 10., функція поверне значення 3.

Після цього можна скористатись іншими функціями, які працюють на основі виводу функції InStr, щоб видобути частину IP-адреси, яка передує першій крапці, як-от:

Left([IPAddress],(InStr(1,[IPAddress],".")-1))

У цьому прикладі функція InStr(1,[IPAddress],".") повертає положення першої крапки. Віднімання 1 визначає кількість символів перед першою крапкою (у цьому випадку – 2). Після цього функція Left видобуває стільки символів із лівої частини поля IPAddress і повертає значення 10.

Використання функції InStr у коді VBA    

Примітка.: У прикладах нижче показано використання цієї функції в модулі Visual Basic for Applications (VBA). Щоб отримати докладні відомості про використання модуля VBA, клацніть пункт Довідник розробника в розкривному списку поряд із полем Пошук і введіть у поле пошуку принаймні один термін.

У цьому прикладі функцію InStr використано, щоб повернути положення першого входження одного рядка в іншому.

Dim SearchString, SearchChar, MyPosSearchString ="XXpXXpXXPXXP" ' String to search in.SearchChar = "P" ' Search for "P".' A textual comparison starting at position 4. Returns 6.MyPos = Instr(4, SearchString, SearchChar, 1) ' A binary comparison starting at position 1. Returns 9.MyPos = Instr(1, SearchString, SearchChar, 0)' Comparison is binary by default' (last argument is omitted).MyPos = Instr(SearchString, SearchChar) ' Returns 9.MyPos = Instr(1, SearchString, "W") ' Returns 0.

support.office.com

Сортировка IP-адресов в Access - 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-адресам, создайте новый объект в запросе, который сортирует адреса как описано выше, а не в таблице, в которой хранятся адреса.

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

support.office.com