С помощью строковых функций в Access можно создавать выражения, которые управляют текстом различными способами. Например, может потребоваться отобразить в форме только часть серийного номера. Кроме того, может потребоваться объединить (объединить) несколько строк, например фамилию и имя. Если вы еще не разбираелись в выражениях, см. статью Создание выражения.
Ниже приведен список некоторых из наиболее распространенных строковых операций в Access и функций, которые вы будете использовать для их выполнения:
|
Действие |
Функция |
Пример |
Результаты |
|---|---|---|---|
|
Возврат знаков с начала строки |
=Left([СерийныйНомер],2) |
Если [SerialNumber] имеет значение "CD234", результатом будет "CD". |
|
|
Возврат знаков с конца строки |
=Right([СерийныйНомер],3) |
Если [SerialNumber] имеет значение "CD234", результатом будет "234". |
|
|
Поиск позиции знака в строке |
=InStr(1,[Имя],"к") |
Если [FirstName] имеет значение "Colin", результат будет равен 4. |
|
|
Возврат знаков из середины строки |
=Mid([СерийныйНомер],2,2) |
Если [SerialNumber] имеет значение "CD234", результатом будет "D2". |
|
|
Удаление начальных и конечных пробелов из строки. |
=Trim([Имя]) |
Если [FirstName] имеет значение "Colin", результатом будет "Колин". |
|
|
Объединение двух строк |
Оператор "знак плюс" (+)* |
=[Имя] + [Фамилия] |
Если [FirstName] — "Colin", а [LastName] — Wilcox, результатом будет "ColinWilcox". |
|
Объединение двух строк с пробелом между ними |
Оператор "знак плюс" (+)* |
=[FirstName] + " " + [LastName] |
Если [FirstName] — "Колин", а [LastName] — Уилкокс, результатом будет "Колин Уилкокс" |
|
Изменения регистра строки на верхний или нижний |
=UCase([Имя]) |
Если [FirstName] имеет значение "Colin", результатом будет "COLIN". |
|
|
Определение длины строки |
=Len([Имя]) |
Если [FirstName] имеет значение "Colin", результат равен 5. |
* Итак, это не функция, а оператор. Однако это самый быстрый способ соединения строк. В классической базе данных также можно использовать оператор амперсанд (&) для объединения.
В Access существует множество других функций, связанных с текстом. Чтобы узнать больше о них, можно открыть построитель выражений и просмотреть списки функций. Построитель выражений доступен практически в любом месте, где вы хотите создать выражение. Обычно есть небольшая кнопка Сборка , которая выглядит следующим образом:
Чтобы продемонстрировать построитель выражений, давайте откроем его из свойства Control Source в форме или представлении. Используйте одну из приведенных ниже процедур в зависимости от того, используете ли вы классическую базу данных или веб-приложение 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. Сначала это кажется немного сложным, но после небольшой практики вы сможете комбинировать несколько выражений для получения нужного результата.