Строковые функции позволяют создавать в Access выражения, которые позволяют различными способами управлять текстом. Например, может потребоваться отобразить в форме только часть числового числа. Или может потребоваться объединить (сцепить) несколько строк, таких как фамилия и имя. Если вы еще не разбираетесь в выражениях, см. статью "Создание выражения".
Ниже перечислены некоторые из наиболее распространенных операций со строками в Access и функции, которые используются для их выполнения.
| Действие | Функция | Пример | Результаты |
|---|---|---|---|
| Возврат знаков с начала строки | Функция Left | =Left([СерийныйНомер],2) | Если значение [SerialNumber] равно "CD234", результатом будет "CD". |
| Возврат знаков с конца строки | Функция Right | =Right([СерийныйНомер],3) | Если значение [SerialNumber] равно "CD234", результатом будет "234". |
| Поиск позиции знака в строке | Функция InStr | =InStr(1,[Имя],"к") | Если [имя] — "Колин", результат будет равен 4. |
| Возврат знаков из середины строки | Функция Mid | =Mid([СерийныйНомер],2,2) | Если значение [SerialNumber] равно "CD234", результатом будет "D2". |
| Удаление начальных и конечных пробелов из строки. | Функции LTrim, RTrim и Trim | =Trim([Имя]) | Если [Имя] — «Колин», результатом будет «Колин». |
| Объединение двух строк | Оператор "знак плюс" (+)* | =[Имя] + [Фамилия] | Если [Имя] — "Колин", а [Фамилия] — Уилкокс, результат будет "КолинУилкокс" |
| Объединение двух строк с пробелом между ними | Оператор "знак плюс" (+)* | =[Имя] + " " " + [Фамилия] | Если [имя] — "Колин", а [фамилия] — Уилкокс, результат будет "Колин Уилкокс" |
| Изменения регистра строки на верхний или нижний | Функция UCase или LCase | =UCase([Имя]) | Если [имя] — "Колин", результат будет "КОЛИН". |
| Определение длины строки | Функция Len | =Len([Имя]) | Если [имя] — "Колин", результат будет равен 5. |
* Итак, это не функция, а оператор. Однако это самый быстрый способ соединить строки. В классических базах данных для объединения также можно использовать оператор амперсанда (&).
В Access существует множество других функций, связанных с текстом. Чтобы узнать о них больше, откройте построитель выражений и просмотрите списки функций. Построитель выражений доступен практически везде, где нужно создать выражение. Обычно для этого есть небольшая кнопка Build следующего вида:
Чтобы продемонстрировать построитель выражений, откройте его из свойства "Данные " в форме или представлении. В зависимости от того, используете ли вы классическую базу данных или веб-приложение Access, выполните одну из процедур, описанных ниже.
Запуск построителя выражений в базе данных на компьютере
Откройте базу данных на компьютере (ACCDB-файл).
Нажмите клавишу F11, чтобы открыть панель навигации, если она еще не открыта.
Если у вас уже есть какая-нибудь форма, щелкните ее в области навигации правой кнопкой мыши и выберите пункт Режим макета. Если у вас нет формы для работы, нажмитекнопку "Создать> форму".
Щелкните правой кнопкой мыши текстовое поле в форме и выберите пункт Свойства.
На странице свойств щелкните All>Control Source (Все управляющие источники) и нажмите
правой части окна свойства Control Source.
В разделе Элементы выражений разверните узел Функции и выберите пункт Встроенные функции.
В разделе Категории выражений выберите пункт Текстовые.
В разделе Значения выражений выберите интересующие вас функции и прочитайте их краткое описание в нижней части построителя выражений.
Примечание
Не каждая из этих функций доступна в любом контексте. Access автоматически фильтрует список в зависимости от контекста.
Комбинирование текстовых функций для большей гибкости
Иногда при каждом вызове строковой функции приходится заново вычислять ее числовые аргументы. Например, функция Left принимает строку и число, как здесь: =Left([СерийныйНомер], 2). Хорошо, если вам всегда требуются именно два первых знака строки, но иногда нужное число знаков для разных элементов различно. Вместо того чтобы просто подбирать количество знаков, можно ввести другую функцию, которая его вычисляет.
Вот пример серийных номеров, каждый из которых содержит дефис в строке. Однако положение дефиса различается:
| [СерийныйНомер] |
|---|
| 3928-29993 |
| 23-9923 |
| 333-53234 |
| 3399940-444 |
Предположим, вы хотите получить левую часть номеров (до дефиса), и тогда каждый раз нужно вычислять, где он расположен. Вот один из способов:
=Left([СерийныйНомер],InStr(1,[СерийныйНомер],"-")-1)
Вместо ввода числа в качестве второго аргумента функции Left мы подключили функцию InStr, которая возвращает позицию дефиса в серийном номере. Вычитаем из этого значения 1 и получаем число знаков, которые должна вернуть функция Left. Сначала это кажется немного сложным, но после небольшой практики вы сможете комбинировать несколько выражений для получения нужного результата.