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