- •Лекция 4 Запросы по нескольким таблицам и перекрестные запросы
- •Соединение таблиц для создания многотабличного запроса
- •Создание внутреннего соединения по одному полю
- •Создание запросов на выборку данных из таблиц с косвенными связями
- •Создание внутреннего соединения по нескольким полям
- •Использование полей подстановок
- •Добавление списка, задающего значение внешнего ключа, при помощи Мастера подстановок
- •Добавление списка постоянных значений к полю таблицы
- •Внешнее, рекурсивное соединения и соединение по отношению
- •Создание рекурсивного соединения
- •Создание соединения по отношению
- •Использование запросов для обновления таблиц
- •Требования к запросам на обновление
- •Определение формата вывода данных
- •Использование строки, помеченной звездочкой, для добавления всех полей в запрос
- •Использование окна свойств для добавления всех полей в запрос
- •Вычисления на всем диапазоне записей таблицы
- •Создание перекрестных запросов
- •Использование фиксированных заголовков столбцов в перекрестных запросах
Использование полей подстановок
Мастер подстановок — позволяет заменить обычные поля таблиц полями со списком. Это позволяет создать для определенного поля список допустимых значений, при выборе элемента в котором в текущую запись автоматически заносится требуемая величина. Поля подстановки имеют следующие типы:
Для поля, содержащего значения внешнего ключа, создается список значений одного или нескольких полей связанной базовой таблицы. Например, таблица "Заказы" имеет два поля внешнего ключа: "КодКлиента" и "КодСотрудника". Для поля "КодКлиента" отображается список значений поля "Название" таблицы "Клиенты", а для поля "КодСотрудника" — список значений полей "Фамилия" и "Имя" таблицы "Сотрудники". Для поля "КодКлиента" подстановка реализуется на основе простого запроса на выборку: SELECT DICTINCTROW [КодКлиента], [Название] FROM [Клиенты] ORDER BY [Название];
Для любого другого поля, исключая поле простого первичного ключа, список содержит фиксированные значения.
Подстановка относится к полю, а не к типу его данных. Она реализуется на основе специального набора свойств, хранящихся вместе с обычными свойствами полей таблиц. Свойства подстановки включены в семейство Properties объекта Field, который входит в объект таблицы TableDef.
Поле подстановки можно задать либо в режиме конструктора, либо в режиме таблицы. Однако в режиме конструктора подстановку можно определить только для существующего поля. В режиме таблицы всегда выводится поле со списком, даже если был задан простой список. Поле со списком или список отображается также в форме, для которой таблица является источником записей. На практике чаще всего используется поле со списком, у которого значение свойства "Ограничиться списком" равно Да.
Добавление списка, задающего значение внешнего ключа, при помощи Мастера подстановок
Скопировать таблицу «Заказы», дать копии новое имя «Заказы_подстановка»
Откройте копию в режиме конструктора и выделите поле "КодСотрудника". В ячейке столбца "Тип данных" выберите из списка элемент "Мастер подстановок". Отображается первое диалоговое окно Мастера подстановок.
Поле подстановки должно включать значения из другой таблицы (таблица "Сотрудники"), поэтому изменять установки в первом окне не требуется. Нажмите кнопку "Далее" для вывода второго диалогового окна Мастера подстановок.
Выбрав переключатель "Таблицы", выделите таблицу "Сотрудники", с которой связано поле "КодСотрудника". Нажмите кнопку "Далее" для вывода третьего диалогового окна Мастера подстановок.
Измените ширину столбцов, обеспечив достаточный интервал между фамилией и именем. Поле "КодСотрудника" является ключевым, и рекомендует скрыть его.
Нажмите кнопку "Готово" для завершения работы Мастера подстановок, а затем кнопку ОК в ответ на приглашение сохранить структуру таблицы. В свойствах подстановки для поля появляются новые значения.
Мастер подстановок (Loolup Wizard) создает также следующую инструкцию SQL: SELECT Сотрудники.КодСотрудника, Сотрудники.Фамилия, Сотрудники.Имя, Сотрудники.Должность FROM Сотрудники ORDER BY [Фамилия];