Applies ToAccess для Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

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

В этой статье

Просмотр привязанного значения поля подстановки в запросе

Отображаемое значение поля подстановки по умолчанию автоматически отображается в представлении таблицы запросов. При создании запроса это поведение можно переопределить, чтобы вместо него отображалось привязанное значение. В этом примере предположим, что вы хотите увидеть связанное значение поля подстановки в таблице Штаб-квартира, которая "ищет" название штата Новая Англия.

Таблицы полей подстановки
  1. Откройте запрос в режиме конструктора.

  2. В этом примере добавьте таблицы Headquarters и NewEngland .

    Две таблицы должны быть соединены.

    Схема поля подстановки

    Дополнительные сведения см. в статье Объединение таблиц и запросов.

  3. Перетащите поле вместе с полем подстановки в сетку конструктора запроса. В этом примере добавьте поля City и NEState .

  4. Щелкните поле Подстановка, а затем на вкладке Конструктор в группе Показать и скрыть щелкните Лист свойств. В этом примере используйте поле NEState .

  5. На странице свойств выберите вкладку Уточняющий запрос , а затем в свойстве Элемент управления отображением выберите Текстовое поле.

    Свойство «Тип элемента управления (Display Control)» в конструкторе запросов

Результат   Теперь при просмотре запроса в режиме таблицы отображается соответствующее привязанное значение отображаемого значения.

Результат запроса, показывающий значение Bound

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

Использование отображаемого значения поля подстановки в запросе

При создании поля подстановки создается соединение между значением Bound и Display. Хотя вы не можете напрямую использовать значение Display в запросе, вы можете использовать соответствующее значение из другого источника данных. В этом примере предположим, что вы хотите использовать отображаемое значение поля подстановки NEState в таблице Headquarters в запросе в качестве критериев.

  1. Откройте запрос в режиме конструктора.

  2. В этом примере добавьте таблицы Headquarters и NewEngland .

    Две таблицы должны быть соединены. Дополнительные сведения см. в статье Объединение таблиц и запросов.

  3. Перетащите нужные поля в сетку запроса. В этом примере перетащите город из таблицы "Штаб-квартира" в первый столбец, NEState из таблицы "Штаб-квартира" во второй столбец, а stateName из таблицы NewEngland - в третий столбец.

  4. Очистите поле Показать проверка поля StateName в сетке запроса.

  5. В сетке запросов в разделе StateName в строке Условия введите Vermont.

    Сетка запросов, отображающая привязанное значение поля подстановки

    Условия запроса основаны на столбце StateName , который, конечно, является тем же значением, что и отображаемое значение NEState, но не отображается в режиме таблицы.

  6. На вкладке Конструктор в группе Результаты нажмите кнопку Выполнить.

Результат    Отображается только строка, содержащая Вермонт .

Результаты запроса

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

Использование многозначного поля в запросе

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

Отображение всех значений в многозначном поле в одной строке

  1. Откройте запрос в режиме конструктора.

  2. В этом примере добавьте таблицу Проблемы .

  3. Перетащите поля в сетку конструктора запроса. В этом примере перетащите поля Title и AssignedTo с многозначным значением.

  4. На вкладке Конструктор в группе Результаты нажмите кнопку Выполнить.

Результат    Как и следовало ожидать, в одном столбце отображается поле Title , а во втором — многозначное поле AssignedTo :

Запрос многозначных полей с неразглавными результатами

Отображение каждого значения многозначного поля в одной строке (плоское представление)

  1. Откройте запрос в режиме конструктора.

  2. В этом примере добавьте таблицу Проблемы .

  3. Перетащите поля в сетку запроса. В этом примере перетащите поля Title и AssignedTo.Value multivalued.

    Формат <имя поля>. Value добавляет свойство Value в виде строки . Значение поля AssignedTo .

  4. На вкладке Конструктор в группе Результаты нажмите кнопку Выполнить.

Результат    Данные распощены таким образом, что поле Title повторяется, а каждое значение в многозначном поле AssignedTo отображается в соответствующей строке:

Запрос многозначных полей с плоских результатов

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

Добавление условий в многозначное поле в запросе

Размещение одних и того же критерия в сетке запросов в разных столбцах сетки оказывает большое влияние на результаты запроса.

Добавление условий, отображающих все значения в многозначном поле в одной строке

Access сначала создает результирующий набор, а затем добавляет условия.

  1. Откройте запрос в режиме конструктора.

  2. В этом примере добавьте таблицу Проблемы .

  3. Перетащите поля в сетку запроса. В этом примере перетащите поля Title , AssignedTo multivalued и AssignedTo.Value multivalued.

  4. Очистите поле Показать проверка поля AssignedTo.Value в сетке запроса.

  5. В сетке запросов в разделе AssignedTo.Value в строке Условия введите "NOT "David Hamilton".

    Сетка конструктора запросов с прямым полем подстановки

    Полезно просмотреть представление SQL:

    SELECT Title, AssignedTo FROM Issues WHERE NOT AssignedTo.Value = “David Hamilton”;

  6. На вкладке Конструктор в группе Результаты нажмите кнопку Выполнить.

Результат    Три проблемы, не назначенные Дэвиду Гамильтону, отображаются в значении по умолчанию.

Результаты для многозначного поля с использованием> имя поля <

Добавление условий, отображающих каждое значение в многозначном поле в одной строке (плоское представление)

Access сначала создает плоский результирующий набор, а затем добавляет условия.

  1. Откройте запрос в режиме конструктора.

  2. В этом примере добавьте таблицу Проблемы .

  3. Перетащите поля в сетку запроса. В этом примере перетащите поля Title и AssignedTo.Value multivalued.

  4. В сетке запросов в разделе AssignedTo.Value в строке Условия введите NOT "David Hamilton".

    Сетка конструктора запросов с помощью . Формат значений для поля подстановки

    Полезно просмотреть представление SQL:

    SELECT Issues.Title, AssignedTo.Value FROM Issues WHERE NOT AssignedTo.Value = “David Hamilton”

  5. На вкладке Конструктор в группе Результаты нажмите кнопку Выполнить.

Результат    Каждая проблема, не назначенная Дэвиду Гамильтону, отображается в плоских значениях.

Результаты для многозначного поля с использованием> имя поля <. Значение

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

Добавление нескольких условий в многозначное поле в запросе

Иногда требуется найти совпадение по нескольким значениям в многозначном поле. Например, предположим, что вы хотите увидеть те проблемы, в которых "Келли Ролли" и "Лиза Миллер" входят в число значений в поле AssignedTo

  1. Откройте запрос в режиме конструктора.

  2. В этом примере добавьте таблицу Проблемы .

  3. Перетащите поля в сетку запроса. В этом примере перетащите поля Title и AssignedTo с многозначным значением.

  4. В сетке запросов в разделе AssignedTo в строке Условия введите "Kelly Rollin" и "Lisa Miller".

  5. На вкладке Конструктор в группе Результаты нажмите кнопку Выполнить.

Результат    Отображаются те две проблемы, которые назначены "Келли Ролин" и "Лиза Миллер".

Результат запроса, демонстрирующий использование оператора AND в поле, одновременно допускающем несколько значений

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

Группирование и подсчет многозначного поля в запросе

Для выполнения вычислений, группирования и сортировки значений, хранящихся в многозначном поле, используйте> имя поля <. Поле значения. Дополнительные сведения о групповых запросах см. в разделе Подсчет данных с помощью запроса.

Подсчет количества проблем, назначенных каждому пользователю

  1. Откройте запрос в режиме конструктора.

  2. В этом примере добавьте таблицу Проблемы .

  3. Перетащите нужные поля в сетку запроса. В этом примере перетащите assignedTo.Value в первый столбец, а title — во второй столбец.

  4. На вкладке Конструктор в группе Показать или скрыть нажмите кнопку Итоги.

    В сетке запроса появится строка Итог . Группа По отображается по умолчанию в ячейке Всего под каждым полем запроса.

  5. В сетке запросов в разделе Заголовок в строке Итог нажмите кнопку Количество.

  6. На вкладке Конструктор в группе Результаты нажмите кнопку Выполнить.

Результат    Количество проблем, назначенных каждому пользователю, отображается в плоском представлении.

Запрос, в котором подсчитываются вопросы, назначенные каждому лицу

Подсчет количества пользователей, назначенных для каждой проблемы

  1. Откройте запрос в режиме конструктора.

  2. В этом примере добавьте таблицу Проблемы .

  3. Перетащите нужные поля в сетку запроса. В этом примере перетащите заголовок в первый столбец, а AssignedTo — во второй столбец.

  4. На вкладке Конструктор в группе Показать или скрыть нажмите кнопку Итоги.

    В сетке запроса появится строка Итог . Group By отображается по умолчанию в ячейке Всего в поле Title в запросе. Выражение по умолчанию отображается в ячейке Всего в поле AssignedTo , так как нельзя выполнить операцию Group By непосредственно в многозначном поле, только <имя поля>. Поле значения.

  5. В сетке запросов в разделе AssignedTo в строке Всего нажмите кнопку Количество.

  6. На вкладке Конструктор в группе Результаты нажмите кнопку Выполнить.

Результат    Число пользователей, назначенных для каждой проблемы, отображается в плоском представлении.

Результат запроса, в котором отображается расчет числа людей, занимающихся одним вопросом

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

Использование запроса добавления с многозначным полем

Одно значение можно вставить в многозначное поле с помощью запроса На добавление. Например, предположим, что вы хотите добавить "Том Майклс" в многозначное поле AssignedTo в таблице Issues.

Примечание.   Это единственный тип запроса добавления, который работает с многозначным полем.

  1. Откройте запрос в режиме конструктора.

  2. Добавьте таблицу Проблемы .

  3. На вкладке Конструктор нажмите кнопку Добавить.

  4. В диалоговом окне Добавление выберите Проблемы и нажмите кнопку ОК.

  5. В строке Добавить к сетки конструктора выберите AssignedTo.Value.

  6. В строке Поле сетки конструктора введите "Том Майклс".

  7. Чтобы ограничить операцию добавления определенными проблемами, добавьте поле в сетку Конструктор, например Заголовок, удалите Заголовок из строки Добавить к , а затем введите условия, например "Проблема 3".

  8. На вкладке Конструктор в группе Результаты нажмите кнопку Выполнить.

    Access может попросить вас подтвердить, следует ли добавить выбранную строку. Нажмите кнопку Да , чтобы вставить строку, или кнопку Нет для отмены.

Результат    "Том Майклс" теперь добавлен в поле AssignedTo для вопроса 3.

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

INSERT INTO [NewIssues] ( ID, Title, AssignedTo ) SELECT Issues.ID, Issues.Title, Issues.AssignedTo FROM Issues;

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

Использование запроса обновления с многозначным полем

Запрос на обновление можно использовать для изменения одного значения в многозначном поле на другое. В этом примере вы хотите обновить многозначное поле AssignedTo, чтобы заменить "Kelly Rollin" на "Lisa Miller".

  1. Откройте запрос в режиме конструктора.

  2. Добавьте таблицу Проблемы .

  3. На вкладке Конструктор нажмите кнопку Обновить.

  4. Перетащите assignedTo.Value в сетку запроса.

  5. В строке Обновить до введите "Лиза Миллер".

  6. В строке Условия введите "Kelly Rollin".

  7. На вкладке Конструктор в группе Результаты нажмите кнопку Выполнить.

    Access может попросить вас подтвердить, следует ли добавить выбранную строку. Нажмите кнопку Да , чтобы вставить строку, или кнопку Нет для отмены.

Результат    Лиза Миллер заменяет Келли Роллина в поле AssignedTo для всех соответствующих проблем.

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

Использование запроса Delete с многозначным полем

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

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

Удаление определенного значения из многозначного поля во всех записях

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

  2. Добавьте таблицу Проблемы .

  3. Откройте запрос в режиме конструктора.

  4. На вкладке Конструктор нажмите кнопку Удалить.

  5. В строке Условия введите "Дэвид Гамильтон".

  6. На вкладке Конструктор в группе Результаты нажмите кнопку Выполнить.

    Access может попросить вас подтвердить удаление записей. Нажмите кнопку Да , чтобы удалить записи, или кнопку Нет для отмены.

Результат    Дэвид Гамильтон удаляется из для всех соответствующих проблем.

Удаление записей, содержащих определенное значение в многозначном поле

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

  2. Добавьте таблицу Проблемы .

  3. Откройте запрос в режиме конструктора.

  4. На вкладке Конструктор щелкните Удалить группу.

  5. На вкладке Конструктор в группе Результаты щелкните стрелку в разделе Вид и выберите пункт Представление SQL.

  6. Введите следующую инструкцию SQL:

    DELETE FROM Issues WHERE (((Issues.AssignedTo.Value)="David Hamilton"));

    Примечание.    В этом случае можно использовать только инструкцию SQL, а не сетку Конструктор. При переключении в представление Конструктор сетки Access добавляет звездочку (*) после инструкции DELETE, которую следует удалить из представления SQL.

  7. На вкладке Конструктор в группе Результаты нажмите кнопку Выполнить.

    Access может попросить вас подтвердить удаление записей. Нажмите кнопку Да , чтобы удалить записи, или кнопку Нет для отмены.

Результат    Все проблемы, при которых назначен Дэвид Гамильтон, удаляются.

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

Нужна дополнительная помощь?

Нужны дополнительные параметры?

Изучите преимущества подписки, просмотрите учебные курсы, узнайте, как защитить свое устройство и т. д.

В сообществах можно задавать вопросы и отвечать на них, отправлять отзывы и консультироваться с экспертами разных профилей.