Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
BBD_Shpory.doc
Скачиваний:
11
Добавлен:
26.09.2019
Размер:
13.1 Mб
Скачать

21. Создание связей для запросов. Объединения и их типы. Объединение в запросе двух копий одной таблицы (самообъединение).

Создание связей для запросов

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

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

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

Таким образом, для просмотра данных с помощью запроса создается объединение таблиц путем установления связей по общим полям (joining).

Существует несколько типов объединений:

1. Внутреннее объединение (равное). Это объединение создается по умолчанию и в результате - все записи с равными полями.

Если существуют записи без пары на другом конце связи. Например, в Клиенты-Заказы - клиент без заказов, или что еще реже заказ без клиента, то такие записи можно также найти, если при создании «Нового запроса» включить опцию «Записи без подчиненных».

Смысл рассмотрения записи без пары существует. Например, выделить клиентов, не сделавших заказы. При этом возникает необходимость видеть всех клиентов. Чтобы всегда видеть всех клиентов нужно изменить свойство объединения. Для изменения нужно дважды щелкнуть на линии связи и появится окно «Параметры объединения».

Там 3 типа:

1. Объединение только тех записей, в которых связанные поля обеих таблиц совпадают - ВНУТРЕННЕЕ.

2. Объединение всех записей из «Имя таблицы («один»)» и только тех записей из «Имя таблицы «многие»», в которых связанные поля совпадают.

3. Объединение всех записей из «Имя таблицы («многие»)» и только тех записей из «Имя таблицы «один»», в которых связанные поля совпадают.

Пункты 2 и 3 – называются внешними объединениями - соответственно левым и правым.

Пустые значения различаются как NULL- неизвестно и “”- пустая строка - говорит о том, что «отсутствует».

О бъединение в запросе двух копий одной таблицы (самообъединение)

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

В этом случае в конструкторе запроса таблица «Сотрудники» добавляется дважды.

При появлении копии её имя получается автоматически. Возможно более осмысленное название путем изменения свойства «Псевдоним» Alias (это никак не влияет на базовую таблицу).

Теперь для построения запроса «Подчиненные» можно из «Сотрудники» взять имя, фамилию, должность, а из «Сотрудники_1» взять фамилию (и имя) начальника. Отобра-жение можно сделать более понятным, если в свойстве «Подпись» вместо «Фамилия» задать «Начальник»

22. Использование в запросе автоподстановки для автоввода данных. Создание параметризованных запросов.

Если многотабличный запрос используется для ввода данных (при соблюдении ограничений), то данные из связанных таблиц подставляются автоматически. Например, если клиент уже существует в БД, то по его коду в запрос автоматически находится и подставляется соответствующая информация (адрес, банковские реквизиты и т.п.). Если код не находится в связанной таблице, то выдается соответствующее сообщение об ошибке после ухода фокуса ввода из поля.

Условия, при которых возможна автоподстановка:

• В запрос должно быть включено несколько таблиц, связанных отношением «один ко многим». Может быть, не должны быть заданы условия целостности данных.

• Со стороны «один» должен быть уникальный индекс (ключ или «Индексированное поле» со свойствами «Совпадение не допускаются» - «Да»).

• В запрос берется поле со стороны «многие».

Значение, введенное в связанное поле на стороне «многие» уже должно присутствовать на стороне «один».

Создание параметризованных запросов

Что такое запрос с параметрами уже говорилось при рассмотрении типов запросов.

Запрос с параметрами - это такой запрос, при запуске которого открывается диалоговое окно с приглашением ввести условие отбора. Условий (и окон) может быть несколько.

Рассмотрим принцип создания запроса с параметрами с одним условием:

Запрос создается в конструкторе запросов обычным способом, но в строке бланка с названием «Условия отбора», перед теми подписями, где должна быть поставлено конкретное значение параметра, нужно написать текст приглашения для диалогового окна в квадратных скобках.

Если речь идет о диапазоне дат (что также типично для таких запросов), то условие отбора может выглядеть:

Between [Введите начальную дату:] And [Введите конечную дату:]

При выполнении запроса (допустим для получения отчета) появится диалоговое окно:

На приглашение существует ограничение 50 символов.

Это окно является частным случаем так называемых всплывающих форм. Оно появляется поверх других окон, забирает фокус ввода на себя и не дает возможность активизировать что-либо другое, пока не нажаты одна из клавиш «ОК» или «ОТМЕНА». Такая форма (диалог) называется МОДАЛЬНОЙ.

Если параметров (и окон) несколько, то они появляются в порядке следования в бланке в конструкторе. Если нужно изменить этот порядок и сообщить тип данных, то необходимо выбрать пункт меню Запрос  Параметры.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]