В Access можно создать многозначное поле, содержащее множество значений (до 100). Вы также можете создать поле подстановки, отображающее понятное пользователю значение, связанное со значением в другом источнике данных. При запросе подстановки или многозначного поля существуют уникальные факторы. За дополнительной информацией обращайтесь к статьям "Создание и удаление многозначного поля " и " Создание и удаление поля подстановки".
В этой статье
- Просмотр связанного значения поля подстановки в запросе
- Использование отображаемого значения для поля подстановки в запросе
- Использование многозначного поля в запросе
- Добавление условий в многозначное поле запроса
- Добавление нескольких условий в многозначное поле запроса
- Группировка и подсчет многозначного поля в запросе
- Использование запроса на добавление с многозначным полем
- Использование запроса на обновление с многозначным полем
- Использование запроса на удаление с многозначным полем
Просмотр связанного значения поля подстановки в запросе
Отображаемое значение поля подстановки автоматически выводится в режиме таблицы запросов по умолчанию. При создании запроса можно переопределить это поведение, чтобы вместо него отображалось связанное значение. Предположим, в этом примере требуется просмотреть связанное значение поля подстановки в таблице штаб-квартиры, которая "ищет" название штата Новая Англия.
Откройте запрос в конструкторе.
В этом примере добавьте таблицы "Штаб-квартира " и "Новая Англия ".
Обе таблицы должны быть соединены.
Дополнительные сведения см. в статье Объединение таблиц и запросов.
Перетащите его вместе с полем подстановки на бланк запроса. В этом примере добавьте поля "Город " и "НЕСтате ".
Щелкните поле подстановки, а затем на вкладке Конструктор в группе Показать или скрыть щелкните Страница свойств. В этом примере используется поле NEState .
На странице свойств откройте вкладку "Подстановка ", а затем в свойстве "Тип элемента управления " выберите пункт "Текстовое поле".
Result (Результат) Теперь при просмотре запроса в режиме таблицы отображается соответствующее связанное значение отображаемого значения.
Использование отображаемого значения для поля подстановки в запросе
При создании поля подстановки создается соединение между значениями Bound и Display. Хотя невозможно напрямую использовать отображаемое значение в запросе, можно использовать соответствующее значение из другого источника данных. Предположим, в этом примере в качестве условий нужно использовать отображаемое значение поля подстановки (NEState) в таблице "Штаб-квартира ".
Откройте запрос в конструкторе.
В этом примере добавьте таблицы "Штаб-квартира " и "Новая Англия ".
Обе таблицы должны быть соединены. Дополнительные сведения см. в статье Объединение таблиц и запросов.Перетащите нужные поля в сетку запроса. В этом примере перетащите город из таблицы "Штаб-квартира" в первый столбец, NEState из таблицы "Штаб-квартира" во второй столбец, а StateName из таблицы "Новая Англия" в третий столбец.
Снимите флажок "Показать проверку" для StateName в сетке запросов.
В сетке запросов в разделе StateName в строке "Условия" введите Vermont.
Условия запроса основаны на столбце StateName , который, конечно же, совпадает с отображаемым значением NEState, но не отображается в режиме таблицы.
На вкладке Конструктор в группе Результаты нажмите кнопку Выполнить.
Result (Результат) Отображается только строка, содержащая название "Вермонт ".
Использование многозначного поля в запросе
При отображении многозначного поля в запросе можно отобразить полное многозначное поле, содержащее все значения, разделенные запятыми в одной строке, или сведенные данные с отдельной строкой для каждого значения. Например, предположим, что существует таблица "Проблемы ", которая содержит поле "Название " для каждой проблемы и многозначное поле "КомуНазначено" для назначения задач пользователям.
Отображение всех значений многозначного поля в одной строке
- Откройте запрос в конструкторе.
- В этом примере добавьте таблицу "Проблемы ".
- Перетащите поля на бланк запроса. В этом примере перетащите поле Title и многозначное поле AssignedTo .
- На вкладке Конструктор в группе Результаты нажмите кнопку Выполнить.
Result (Результат) Как можно ожидать, один столбец отображает поле заголовка , а второй — многозначное поле AssignedTo :
Отображение каждого значения многозначного поля в одной строке (плоское представление)
- Откройте запрос в конструкторе.
- В этом примере добавьте таблицу "Проблемы ".
- Перетащите поля в сетку запроса. В этом примере перетащите поле Title и многозначное поле AssignedTo.Value .
Формат <Fieldname>. Value добавляет свойство Value в виде строки. Значение поля "Кому". - На вкладке Конструктор в группе Результаты нажмите кнопку Выполнить.
Result (Результат) Данные преобразуются в плоскую структуру, чтобы поле Title повторялось, а каждое значение многозначного поля AssignedTo отображалось в соответствующей строке:
Добавление условий в многозначное поле запроса
Размещение одних и тех же условий в разных столбцах запроса оказывает значительное влияние на результаты запроса.
Добавление условия, отображающего все значения многозначного поля в одной строке
Сначала создается результирующий набор, а затем добавляются условия.
Откройте запрос в конструкторе.
В этом примере добавьте таблицу "Проблемы ".
Перетащите поля в сетку запроса. В этом примере перетащите поле "Название", многозначное поле "Кому-назначено" и многозначное поле "КомуНазначено".
В сетке запроса снимите флажок "Показать проверку" для значения "КомуНазначено".
В сетке запроса в разделе "КомуНазначено.Значение" в строке "Условия " введите "НЕ "Иван Гамильтон".
Полезно видеть режим SQL:
SELECT Title, AssignedTo FROM Issues WHERE NOT AssignedTo.Value = "David Hamilton";На вкладке Конструктор в группе Результаты нажмите кнопку Выполнить.
Result (Результат) Три проблемы, не назначенные Дэвиду Гамильтону, отображаются в значении по умолчанию.
Добавление условий, отображающих каждое значение многозначного поля в одной строке (плоское представление)
Сначала создается упорядоченный результирующий набор, а затем добавляются условия.
Откройте запрос в конструкторе.
В этом примере добавьте таблицу "Проблемы ".
Перетащите поля в сетку запроса. В этом примере перетащите поле Title и многозначное поле AssignedTo.Value .
В сетке запроса в разделе "Кому_Назначено" в строке "Условие отбора " введите НЕ "Дэвид Гамильтон".
Полезно видеть режим SQL:
SELECT Issues.Title, AssignedTo.Value FROM Issues WHERE NOT AssignedTo.Value = "David Hamilton"На вкладке Конструктор в группе Результаты нажмите кнопку Выполнить.
Result (Результат) Каждый выпуск, не назначенный Дэвиду Гамильтону, отображается в плоском значении.
Добавление нескольких условий в многозначное поле запроса
Иногда вам нужно искать совпадения для нескольких значений внутри многозначного поля. Предположим, вы хотите просмотреть проблемы, в которых "Регина Владимировна" и "Лина Клина Миллер" входят в число значений в поле "КомуНазначено"
- Откройте запрос в конструкторе.
- В этом примере добавьте таблицу "Проблемы ".
- Перетащите поля в сетку запроса. В этом примере перетащите поле Title и многозначное поле AssignedTo .
- В сетке запроса в разделе "Кому" в строке "Условие отбора " введите "Регина Владимировна" И "Лина Миллер".
- На вкладке Конструктор в группе Результаты нажмите кнопку Выполнить.
Result (Результат) Отображаются те два выпуска, которые назначены «Келли Роллин» и «Лиза Миллер».
Группировка и подсчет многозначного поля в запросе
Для вычислений, группировки и сортировки значений, хранящихся в многозначном поле, используйте <Fieldname>. Поле значения. Дополнительные сведения о групповых запросах см. в статье "Подсчет данных с помощью запроса".
Подсчет количества вопросов, назначенных каждому пользователю
- Откройте запрос в конструкторе.
- В этом примере добавьте таблицу "Проблемы ".
- Перетащите нужные поля в сетку запроса. В этом примере перетащите значение AssignedTo.Value в первый столбец, а Title — во второй.
- На вкладке Конструктор в группе Показать или скрыть нажмите кнопку Итоги.
В бланке запроса появится строка "Итого ". Группировка по умолчанию отображается в ячейке "Итог" под каждым полем запроса. - В сетке запроса в разделе "Название" в строке "Итог " щелкните "Количество".
- На вкладке Конструктор в группе Результаты нажмите кнопку Выполнить.
Result (Результат) Количество вопросов, назначенных каждому человеку, отображается в плоском представлении.
Чтобы подсчитать, сколько людей назначено для каждой проблемы
- Откройте запрос в конструкторе.
- В этом примере добавьте таблицу "Проблемы ".
- Перетащите нужные поля в сетку запроса. В этом примере перетащите Title в первый столбец и AssignedTo во второй.
- На вкладке Конструктор в группе Показать или скрыть нажмите кнопку Итоги.
В бланке запроса появится строка "Итого ". По умолчанию в ячейке "Итог" под полем "Название" в запросе отображается параметр "Группировать по". По умолчанию выражение отображается в ячейке "Итог " под полем "КомуНазначено ", так как операция "Группировать по" не возможна непосредственно с многозначным полем <(это будет только имя> поля). Поле значения. - В сетке запроса в разделе "Кому" в строке "Итог " щелкните "Количество".
- На вкладке Конструктор в группе Результаты нажмите кнопку Выполнить.
Result (Результат) Количество людей, назначенных на задачу, отображается в плоском представлении.
Использование запроса на добавление с многозначным полем
Вставить одно значение в многозначное поле можно с помощью запроса на добавление. Предположим, что в многозначное поле "КомуКому" в таблице "Проблемы" нужно добавить "Том Майклз".
Примечание Это единственный тип запроса на добавление, который работает с многозначным полем.
- Откройте запрос в конструкторе.
- Добавьте таблицу "Проблемы ".
- На вкладке "Конструктор " нажмите кнопку "Добавить".
- В диалоговом окне "Добавление" выберите "Проблемы" и нажмите кнопку "ОК".
- В строке "Добавить" бланка выберите значение "КомуНазначено".
- В строке "Поле " бланка введите "Том Майклз".
- Чтобы ограничить операцию добавления определенными проблемами, добавьте на бланк конструктора поле, например "Название", удалите поле "Название " из строки "Добавить в " и введите условие, например "Проблема 3".
- На вкладке Конструктор в группе Результаты нажмите кнопку Выполнить.
Access может попросить вас подтвердить, следует ли добавить выбранную строку. Нажмите кнопку " Да ", чтобы вставить строку, или " Нет ", чтобы отменить операцию.
Result (Результат) "Том Майклз" теперь добавлен в поле "Кому" для проблемы 3.
Важно! Нельзя использовать запрос на добавление, ссылающийся на таблицу, содержащую многозначное поле. Например, недопустим следующий запрос:
INSERT INTO [NewIssues] ( ID, Title, AssignedTo ) SELECT Issues.ID, Issues.Title, Issues.AssignedTo FROM Issues;
Использование запроса на обновление с многозначным полем
С помощью запроса на обновление можно изменить одно значение в многозначном поле на другое. В этом примере нужно обновить многозначное поле AssignedTo, чтобы заменить "Регина Владимировна" на "Лина Миллер".
- Откройте запрос в конструкторе.
- Добавьте таблицу "Проблемы ".
- На вкладке " Конструктор " нажмите кнопку "Обновить".
- Перетащите AssignedTo.Value в сетку запроса.
- В строке "Обновление" введите "Лина Миллер ".
- В строке "Условие отбора " введите "Келли Роллин".
- На вкладке Конструктор в группе Результаты нажмите кнопку Выполнить.
Access может попросить вас подтвердить, следует ли добавить выбранную строку. Нажмите кнопку " Да ", чтобы вставить строку, или " Нет ", чтобы отменить операцию.
Result (Результат) Лиза Миллер заменяет Келли Роллин в поле "Кому" для всех соответствующих проблем.
Использование запроса на удаление с многозначным полем
При работе с таблицей, содержащей многозначное поле, можно использовать запрос на удаление для удаления записей, содержащих определенное значение в многозначном поле, или для удаления определенного значения из многозначного поля во всех записях таблицы. Предположим, в приведенном ниже примере требуется удалить фразу "Дэвид Гамильтон" из таблицы "Проблемы".
Важно! При использовании запроса на удаление для удаления многозначного поля, содержащего данные, эти данные теряются безвозвратно, отменить это действие нельзя. Поэтому перед удалением каких-либо полей или других компонентов базы данных создавайте резервную копию базы данных.
Удаление определенного значения из многозначного поля во всех записях
- На вкладке Создание в группе Запросы нажмите кнопку Конструктор запросов.
- Добавьте таблицу "Проблемы ".
- Откройте запрос в конструкторе.
- На вкладке " Конструктор " нажмите кнопку "Удалить".
- В строке "Условие отбора " введите "Дэвид Гамильтон".
- На вкладке Конструктор в группе Результаты нажмите кнопку Выполнить.
Access может попросить вас подтвердить удаление записей. Нажмите кнопку " Да ", чтобы удалить записи, или " Нет ", чтобы отменить запись.
Result (Результат) Дэвид Гамильтон удален из-за всех соответствующих проблем.
Удаление записей, содержащих определенные значения в многозначном поле
На вкладке Создание в группе Запросы нажмите кнопку Конструктор запросов.
Добавьте таблицу "Проблемы ".
Откройте запрос в конструкторе.
На вкладке " Конструктор " нажмите кнопку "Удалить группу".
На вкладке " Конструктор " в группе "Результаты " щелкните стрелку под кнопкой " Вид " и выберите пункт "Режим SQL".
Введите следующую инструкцию SQL:
DELETE FROM Issues WHERE (((Issues.AssignedTo.Value)="David Hamilton"));Примечание В этом случае можно использовать только инструкцию SQL, а не бланк конструктора. При переходе в режим бланка после инструкции DELETE добавляется звездочка (*), которую необходимо удалить из представления SQL.
На вкладке Конструктор в группе Результаты нажмите кнопку Выполнить.
Access может попросить вас подтвердить удаление записей. Нажмите кнопку " Да ", чтобы удалить записи, или " Нет ", чтобы отменить запись.
Result (Результат) Все проблемы, в которые назначен Дэвид Гамильтон, удалены.