|
Печать результатов запроса
Результаты запроса можно не только посмотреть на экране, но и напечатать. Сделать это можно несколькими способами:
-
Открыть запрос в режиме Таблицы и нажать кнопку
Печать
(Print) на панели инструментов. При этом таблица выводится на принтер, установленный по умолчанию, и используются параметры печати, заданные по умолчанию.
-
Открыть запрос в режиме Таблицы и выполнить команду
Файл, Печать
(File, Print). В этом случае перед печатью таблицы на экран выводится стандартное окно
Печать
(Print) (рис. 4.39), в котором можно изменить параметры печати, заданные по умолчанию. Например, можно выделить в результирующей таблице только некоторые записи, а затем в диалоговом окне
Печать
(Print) установить переключатель
выделенные записи
(Selected Record(s)). Тогда будут напечатаны только выделенные записи.
Передача результатов запроса в другие приложения
В Microsoft Access имеются возможности быстрой передачи результатов запросов в другие приложения Microsoft Office. Рассмотрим эти возможности.
Существуют четыре способа использования данных Microsoft Access в Microsoft Word.
-
При работе с Microsoft Word версии 7.0/95 или более поздней можно с помощью Мастера по созданию составных документов Microsoft Word создавать документы Word, связанные с данными Microsoft Access. После установления связи документ может быть в любое время открыт в Microsoft Word и использован для печати стандартных писем или почтовых наклеек, в которых используются текущие данные из Microsoft Access.
-
При работе с любой версией Microsoft Word допускается экспорт данных из Microsoft Access в файл данных составного документа, который применяется при создании составных документов Word.
-
Допускается сохранение данных в файле формата RTF. При этом сохраняются такие атрибуты форматирования, как шрифты и стили. Файл RTF может быть открыт в Microsoft Word, в других текстовых процессорах на платформе Windows или в издательских программах.
-
Допускается сохранение объекта в режиме Таблицы, формы или отчета в файле формата RTF с автоматической загрузкой его в Microsoft Word. При этом Microsoft Word открывается и отображается окно с экспортированным документом.
Чтобы создать составной документ Microsoft Word с помощью мастера, необходимо:
-
В окне базы данных выделить имя экспортируемого запроса, выбрать в меню
Сервис
(Tools) команду
Связи с Office
(Office Links) и подкоманду
Слияние с MS Word
(Merge It with MS Word).
-
В окне
Слияние с документами Microsoft Word
(Microsoft Word Mail Merge Wizard) установить один из двух переключателей:
Установить связь с готовым документом Microsoft Word
(Link your data with existing MS Word document) или
Создать новый документ и установить связь с ним
(Create new document and then link data to it), а затем нажать кнопку
OK
(рис. 4.40).
-
В первом случае необходимо выбрать требуемый файл в окне открытия файла и нажать кнопку
Открыть
(Open).
Откроется пустой документ Word, и отобразится панель инструментов
Слияние
(Mail Merge). Чтобы вставить в документ нужные поля, используйте кнопку
Добавить поле слияния
(Insert Merge Field) на этой панели.
Рекурсивное соединение
Рекурсивное соединение
В качестве примера рекурсивного соединения рассмотрим запрос к базе данных "Борей" (Northwind), в котором выводятся заказы клиентов, принятые и выполненные в один день.
Для создания такого запроса мы будем использовать таблицу "Заказы" (Orders):
-
Создайте новый запрос и добавьте в него таблицу "Заказы".
-
Добавьте в запрос копию таблицы, повторно нажав кнопку
Добавить
(Show Table). Access присваивает копии имя "Заказы_1". Закройте диалоговое окно
Добавление таблицы
(Show Table).
-
Перетащите поле "ДатаРазмещения" (OrderedDate) исходной таблицы "Заказы" на поле "ДатаИсполнения" (ShippedDate) таблицы "Заказы_1". Между таблицами возникает соединение (рис. 4.29).
-
Перетащите поля "КодЗаказа" (Orderld), "КодКлиента" (Customerld) и "ДатаРазмещения" (OrderedDate) таблицы "Заказы" в первые три столбца бланка запроса соответственно.
Создание и изменение запроса с помощью Конструктора запросов
Для изменения уже существующих запросов и для создания новых запросов используется Конструктор запросов. Для того чтобы открыть запрос в режиме Конструктора, выделите в списке один из существующих запросов, например только что созданный запрос "Сотрудники Запрос", и нажмите кнопку
Конструктор
(Design) на панели инструментов окна
База данных
(Database).
Появляется окно Конструктора запросов (рис. 4.5). В верхней части окна отображается таблица (или несколько таблиц, если запрос многотабличный) в том виде, в каком таблицы отображаются в окне
Схема данных
(Relationship). Таблицы — источники данных для запроса, мы будем называть
базовыми
таблицами запроса. В нижней части окна находится
бланк запроса
— таблица, ячейки которой используются для определения запроса. В бланке отображаются все столбцы, включенные в результирующее множество запроса.
Для того чтобы просматривать полностью бланк запроса и все исходные таблицы, используют линейки прокрутки.
В области панелей инструментов Access отображается панель инструментов
Конструктор запросов
(Queries Design). Эта панель представлена на рис. 4.6, а в табл. 4.1 приведено описание кнопок этой панели инструментов и соответствующие им команды меню.
Создание простого запроса с помощью Мастера запросов
Создание простого запроса с помощью Мастера запросов
Наиболее просто создается запрос при помощи Мастера запросов. Чтобы создать простой запрос с помощью Мастера запросов, необходимо:
-
В окне базы данных на панели объектов выбрать ярлык
Запросы
(Queries).
-
В списке запросов дважды щелкнуть левой кнопкой мыши на ярлыке
Создание запроса с помощью мастера
(Create query by using wizard) или нажать на кнопку Создать (New) в окне базы данных и в появившемся диалоговом окне
Новый запрос
(New Query) выбрать
Простой запрос
(Simple Query Wizard) и нажать на кнопку
ОК
(рис. 4.1).
-
В появившемся окне
Создание простых запросов
(Simple Query Wizard) (рис. 4.2) в поле со списком
Таблицы и запросы
(Tables/Queries) выбрать таблицу или запрос, которые будут служить источником данных для создаваемого запроса.
-
С помощью стрелок вправо и влево переместить из списка
Доступные поля
(Available Fields) в список
Выбранные поля
(Selected Fields) те поля, которые необходимы в конструируемом запросе. При этом порядок полей в запросе будет соответствовать порядку полей в списке
Выбранные поля
(Selected Fields). Если нужно включить в запрос все поля, можно воспользоваться кнопкой
с
двумя стрелками вправо.
Создание вычисляемых полей в запросах
Создание запросов интересно не только тем, что вы можете в виде одной таблицы представить данные из нескольких связанных таблиц и отобрать нужные записи из этих таблиц. Вы можете создавать столбцы в запросе, которые являются результатом вычислений над значениями других столбцов. Такие столбцы называются
вычисляемыми.
Это существенно расширяет возможности запросов. Простейшим примером вычисляемого поля в запросе может быть поле, которое объединяет имя и фамилию человека. На рис. 4.18 показан пример такого поля в запросе, созданном на базе таблиц "Сотрудники" (Employees) и "Заказы" (Orders).
Чтобы создать вычисляемое поле, нужно ввести выражение, которое вычисляет требуемое значение, в строку
Поле
(Field) свободного столбца бланка запроса. В данном примере это выражение представляет собой конкатенацию полей, содержащих имя и фамилию сотрудника, с пробелом между ними. В этом выражении мы используем ссылки на поля таблицы, которые в выражении заключаются в квадратные скобки. Перед выражением нужно написать имя поля: ФИО и отделить его двоеточием от выражения.
Создание выражений с помощью Построителя выражений
Создание выражений с помощью Построителя выражений
Ввод выражений возможен в. среде Access не только вручную, но и с помощью удобного инструмента, называемого Построитель выражений (Expression Builder).
Построитель выражений (Expression Builder) вызывается всякий раз, когда в поле свойства объекта Access, например в ячейке бланка Конструктора запросов, вы щелкаете кнопку Построителя (кнопка с тремя точками) или нажимаете кнопку
Построить
(Build) на панели инструментов.
Для демонстрации работы Построителя выражений воспользуемся демонстрационной базой "Борей" (Northwind). После создания и проверки запроса можно применить критерий отбора, чтобы ограничить количество записей в результирующем множестве запроса:
-
Выберите запрос "Счета" (Invoices) и, нажав кнопку
Конструктор
панели инструментов в окне базы данных, перейдите в режим Конструктора запроса.
-
Поместите курсор на строку
Условие отбора
(Criteria) поля, для которого вы хотите установить критерий выборки, скажем, поля "СтранаПолучателя" (Ship Country).
-
Нажмите кнопку Построителя выражений
Построить
(Build) на панели инструментов Access для вывода окна
Построитель выражений
(Expression Builder). Другой способ — нажмите правую кнопку мыши в строке
Условие отбора
(Criteria) и выберите из меню команду
Построить
(Build).
-
В поле выражений вверху окна Построителя выражений введите требуемое выражение. На рис. 4.46 показан пример выражения Like "Ф*", которое работает в строке
Условие отбора
(Criteria) поля "СтранаПолучателя" (Ship Country). Для ускорения ввода Like можно воспользоваться кнопкой
Like
под окном ввода выражений.
Создание запроса из фильтра
Еще одним способом создания запроса является сохранение фильтра в виде запроса. Выше мы говорили, что фильтр используется при просмотре таблицы для отбора нужных записей. Если вы создали достаточно сложный фильтр в- окне
Фильтр
(Filter by Form) и знаете, что его придется использовать и в дальнейшем, можно сохранить его в базе данных в виде запроса. Для этого достаточно нажать кнопку
Сохранить как запрос
(Save as query) на панели инструментов при открытом окне
Фильтр
(Filter by Form).
-
Откройте в режиме Таблицы таблицу "Клиенты" (Customers).
-
Нажмите кнопку
Изменить фильтр
(Filter by form) на панели инструментов. Появится окно, в котором можно задать фильтр.
-
Выберите из списка в поле
Должность
(ContactTitle) значение
Менеджер по продажам
(Sales Manager).
-
Проверьте, как работает фильтр, нажав кнопку
Применение фильтра
(Apply filter) на панели инструментов. Убедившись, что фильтр работает правильно, вы можете сохранить его для дальнейшего использования.
-
Нажмите кнопку
Изменить фильтр
(Filter by form) на панели инструментов еще раз, чтобы вернуться в окно определения фильтра.
-
Нажмите кнопку
Сохранить как запрос
(File, Save As Query) на панели инструментов или выполните команду
Файл, Сохранить как запрос
(File, Save As Query). Появится диалоговое окно (рис. 4.34), в котором необходимо указать имя запроса: Менеджеры по продажам и нажать кнопку
ОК.
-
Снимите фильтр, нажав кнопку
Удалить фильтр
(Remove Filter).
Описание кнопок на панели инструментов Конструктор запросов
Таблица 4.1.
Описание кнопок на панели инструментов
Конструктор запросов

|
|
|
|
|
|
|
|
Кнопка
|
Описание
|
Команда меню
|
|
|
|
Вид (View)
|
Отображение запроса в различных режимах. Чтобы изменить режим отображения запроса, нажмите стрелку справа от кнопки и в появившемся списке выделите нужный элемент. Если просто нажать эту кнопку, запрос будет отображен в режиме Таблицы
|
Вид, Режим таблицы
(View, Datasheet View)
|
|
|
|
Сохранить (Save)
|
Сохранение активного запроса
|
Файл, Сохранить
(File, Save)
|
|
|
|
Печать (Print)
|
Печать результатов запроса без открытия диалогового окна Печать
|
Нет вЬ
|
|
|
|
Предварительный просмотр
(Print Preview)
|
Предварительный просмотр запроса перед печатью
|
Файл, Предварительный просмотр
(File, Print Preview)
|
|
|
|
Орфография
(Spelling)
|
Проверка орфографии в текстовых полях запроса
|
Сервис, Орфография
(Tools, Spelling)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Кнопка
|
Описание
|
Команда меню
|
|
|
|
Вырезать (Cut)
|
Удаление выделенных объектов из запроса в буфер обмена Windows
|
Правка, Вырезать
(Edit, Cut)
|
|
|
|
Копировать (Сору)
|
Копирование выделенных объектов запроса в буфер обмена
|
Правка, Копировать
(Edit, Copy)
|
|
|
|
Вставить (Paste)
|
Вставка содержимого буфера обмена в запрос
|
Правка, Вставить
(Edit, Paste)
|
|
|
|
Формат по образцу
(Format Painter)
|
Копирование параметров форматирования из одного выделенного объекта в другой такого же типа
|
Нет
|
|
|
|
Отменить (Undo)
|
Отмена последнего изменения запроса
|
Правка, Отменить
(Edit, Undo)
|
|
|
|
Тип запроса (Query Туре)
|
Изменение типа запроса. Для изменения типа запроса щелкните по стрелке справа от кнопки и выберите из списка нужный тип запроса
|
Запрос, Выборка
(Query, Select Query)
|
|
|
|
Запуск (Run)
|
Выполнение запроса
|
Запрос, Запуск
(Query, Run)
|
|
|
|
Отобразить таблицу (Show Table)
|
Выводится диалоговое окно Добавление таблицы (Show Table)
|
Запрос, Добавить таблицу (Query, Show Table)
|
|
|
|
Групповые операции (Totals)
|
Группировка записей в запросе и расчет итоговых значений
|
Вид, Групповые операции (View, Totals)
|
|
|
|
Набор значений
(Top Values)
|
Отобразить только первые записи запроса. Количество отображаемых записей указывается в поле ввода либо в штуках, либо в процентах
|
Нет
|
|
|
|
Свойства
(Properties)
|
Открытие окон свойств выделенных объектов: запроса или поля запроса
|
Вид, Свойства
(View, Properties)
|
|
|
|
Построитель (Build)
|
Вызов построителя для создания выражения. Кнопка доступна только тогда, когда активизировано свойство запроса или поля запроса, которое допускает ввод выражения, например Условие отбора (Criteria)
|
Нет
|
|
|
|
Окно базы данных
(Database Window)
|
Отображение окна базы данных
|
Окно, 1 (Window, 1)
|
|
|
|
Новый объект
(New Object)
|
Создание нового объекта базы данных. Чтобы выбрать тип создаваемого объекта, нажмите стрелку справа от кнопки
|
Нет
|
|
|
|
Справка по Microsoft Access
(Microsoft Access Help)
|
Вызов помощника и получение справки по Access 2002
|
Справка, Справка по Microsoft Access
(Help, Microsoft Access Help)
|
|
|
|
|
|
|
|
С использованием кнопок панели инструментов вы будете знакомиться по мере изучения работы с запросами, как в данной главе, так и
в гл. 8.
А теперь рассмотрим, как создать новый запрос с помощью Конструктора запросов. Для этого необходимо:
-
В окне базы данных на панели объектов выбрать ярлык
Запросы
(Queries).
-
В списке запросов выбрать ярлык
Создание запроса в режиме конструктора
(Create query in Design view) или нажать кнопку
Создать
(New), в появившемся окне
Новый запрос
(New Query) выбрать
Конструктор
(Design view) и нажать на кнопку
ОК.
-
В окне
Добавление таблицы
(Show Table) (см. рис. 4.5) выбрать одну или несколько таблиц или запросов для построения нового запроса и нажать кнопку
Добавить
(Add). Для удобства выбора таблиц и запросов в окне существуют следующие вкладки:
Таблицы
(Tables), на которой отображается список таблиц;
Запросы
(Queries), на которой отображается список запросов;
Таблицы и запросы
(Both), на которой отображается список таблиц и запросов вместе.
Арифметические операторы
Таблица 4.2.
Арифметические операторы
|
|
|
|
|
|
|
|
Оператор
|
Пример
|
Описание
|
|
|
|
+
|
[Итог] + [Надбавка]
|
Складывает два операнда
|
|
|
|
-
|
Date () - 7
|
Считает разность двух операндов
|
|
|
|
- (унарный)
|
-12345
|
Меняет знак операнда
|
|
|
|
*
|
[Коробок] * [Цена коробки]
|
Перемножает два операнда
|
|
|
|
/
|
[Количество] / 12.55
|
Делит один операнд на другой
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Оператор
|
Описание
|
Пример
|
|
|
|
\
|
Делит один целый операнд на другой нацело. При использовании деления нацело операнды с десятичными дробями округляются до целого, а дробные части отбрасываются
|
[Коробок] \ 2
|
|
|
|
Mod
|
[Коробок] Mod 12
|
Возвращает остаток от деления нацело. Например, 15 Mod 12 равно 3
|
|
|
|
^
|
Возводит операнд Основание в степень Показатель
|
^
[Показатель]
|
|
В таблице отсутствует знак равенства (=), поскольку он отнесен к группе операторов присваивания и сравнения.
Операторы сравнения
Таблица 4.3.
Операторы сравнения
|
|
|
|
|
|
|
|
|
Оператор
|
Пример
|
Результат
|
Описание
|
|
|
|
<
|
1 < 100
|
True
|
Меньше
|
|
|
|
<=
|
1 <= 1
|
True
|
Меньше либо равно
|
|
|
|
=
|
1 = 100
|
False
|
Равно
|
|
|
|
>=
|
100 >= 1
|
True
|
Больше либо равно
|
|
|
|
>
|
100 > 100
|
False
|
Больше
|
|
|
|
<>
|
1 <> 100
|
True
|
Неравно
|
|
|
|
|
|
|
|
|
Замечание
Если один из операндов имеет значение Null (пустое значение), то любое" сравнение возвращает значение Null (тоже пустое значение).
Зависимость значения логических операторов от значения операндов
Таблица 4.4.
Зависимость значения логических операторов от значения операндов
|
|
|
|
|
|
|
|
|
|
|
A=True B=False
|
A=True B=True
|
A=False B=False
|
A=False B=True
|
|
|
|
A And В
|
False
|
True
|
False
|
False
|
|
|
|
A Or В
|
True
|
True
|
False
|
True
|
|
|
|
Not A
|
False
|
False
|
True
|
True
|
|
|
|
А Хог В
|
True
|
False
|
False
|
True
|
|
|
|
A Eqv В
|
False
|
True
|
True
|
False
|
|
|
|
A Imp В
|
False
|
True
|
True
|
True
|
|
|
|
|
|
|
|
|
|
Для всех логических операторов, кроме Imp, значение одного из операндов Null приводит к значению результата Null.
Значения оператора Imp с Null-операндами
Таблица 4.5.
Значения оператора Imp с Null-операндами
|
|
|
|
|
|
|
|
|
|
|
|
A=Null B=False
|
A=Null B=True
|
A=False B=Null
|
A=True B=Null
|
A=Null B=Null
|
|
|
|
A Imp В
|
Null
|
True
|
True
|
Null
|
Null
|
|
|
|
|
|
|
|
|
|
|
В случае если сравниваются два выражения и, по крайней мере, одно из них не является константой из множества (True, False, Null), логические операторы приводят к побитовому сравнению выражений-операндов (табл. 4.6).
Значения логических операторов для однобитовых операндов
Таблица 4.6.
Значения логических операторов для однобитовых операндов
|
|
|
|
|
|
|
|
|
|
Значения соответствующего бита результата
|
битА=1
бит В=0
|
6итА=1
битВ=1
|
битА=0
бит В=0
|
бит А=0
бит В=1
|
|
|
|
A And В
|
0
|
1
|
0
|
0
|
|
|
|
A Or В
|
1
|
1
|
0
|
1
|
|
|
|
Not A
|
0
|
0
|
1
|
1
|
|
|
|
А Хог В
|
1
|
0
|
0
|
1
|
|
|
|
A Eqv В
|
0
|
1
|
1
|
0
|
|
|
|
A Imp В
|
0
|
1
|
1
|
1
|
|
|
|
|
|
|
|
|
|
Другие операторы, используемые в выражениях Access
Таблица 4.7.
Другие операторы, используемые в выражениях Access
|
|
|
|
|
|
|
|
Оператор
|
Пример
|
Описание
|
|
|
|
Between
|
Between (-100) And (100)
|
Определяет, находится ли числовое значение в определенном диапазоне значений
|
|
|
|
Is
|
Is Null Is Not Null
|
При использовании вместе с Null определяет, является ли значение Null или Not Null
|
|
|
|
In
|
In ("Москва", "Киев", "Санкт-Петербург")
|
Определяет, является ли строковое значение элементом списка значений
|
|
|
|
Like
|
Like "Ив*" Like "db??"
|
Определяет, начинается ли строковое значение с указанных символов (для правильной работы Like нужно добавить символ шаблона "*" или один или несколько символов "?")
|
|
|
|
|
|
|
|
Для пользователей, знакомых с шаблонами командной строки DOS, применение знаков (символов шаблона) "*" и "?" в операторах Like не вызовет затруднений. Точно так же, как в DOS, символ "*" замещает любое число знаков, а символ шаблона "?" замещает только один знак, поэтому Like "Ив*" вернет True для значений "Иванов", "Иващенко", "Иволгин". Для "dbl" или "dbl00" значение оператора Like "db??" будет False, но тот же оператор вернет для "dbl0" и "dbXX" значение True. Символы шаблона "*" и "?" могут стоять в любом месте шаблонной строки, . например:
-
Like "*ms* . ?*" — возвращает True только для значений, содержащих в своем теле подстроку "ms", после которой (может быть сразу, а может быть через несколько символов) следует не менее двух символов, первый из которых точка (.);
-
Like "?1???*" — возвращает True только для значений, состоящих не менее чем из пяти символов, вторым из которых является "1".
Виды соединений В зависимости...
Наиболее распространенным является
внутреннее соединение (эквисоедшение).
Если таблицы связаны отношением "один-ко-многим", соединения основываются на уникальном значении поля первичного ключа в одной таблице и значениях поля внешнего ключа в другой таблице. В результирующее множество запроса попадают все записи из главной таблицы (таблицы на стороне "один"), для которых имеются соответствующие записи в подчиненной таблице (таблице на стороне "многие"). Если в подчиненной таблице записи с заданной величиной отсутствуют, то соответствующие записи в главной таблице в результирующее множество не включаются. Подобного рода соединения между таблицами Access создает автоматически, если:
-
в таблицах имеются поля с одинаковыми именами и согласованными типами, причем одно из полей является ключевым;
-
соединение было явно задано в окне
Схема данных
(Relationships).
Замечание
"Согласованные типы" в большинстве случаев означают одинаковые типы. Исключением является поле типа Счетчик, которое может иметь размер Длинное целое или Код репликации и может связываться с числовыми полями соответствующего размера.
Результатом такого запроса являются все записи, значения связанных полей которых в обеих таблицах совпадают. Другими словами, эквисоединение связывает записи в таблицах отношением равенства значений связывающих полей.
Для создания запроса, объединяющего все записи из одной таблицы, и только те записи из второй, в которых связанные поля совпадают, используют
внешнее соединение.
В этом случае независимо от того, имеются ли соответствующие записи во второй таблице, все записи первой попадают в результирующее множество запроса.
Если необходимо связать данные любым отношением, кроме отношения равенства, используют
соединение по отношению
или
тэта-соединение).
Соединение по отношению не отображается в окне
Схема данных
(Relationships) и не выводится в окне Конструктора запросов.
Для обозначения внутренних соединений в Access используются зарезервированные слова ANSI SQL INNER JOIN, а для указания внешних соединений — слова LEFT JOIN или RIGHT JOIN. Выражение WHERE <поле1>=<поле2> соответствует внутреннему соединению, a WHERE поле1>поле2 — соединению по отношению (одному из таких соединений).
Для связывания данных в одной таблице применяют
рекурсивное соединение.
Оно создается путем добавления в запрос копии таблицы (в результате чего Access назначает псевдоним для копии) и связывания полей идентичных таблиц.
Внешнее соединение
Внешнее соединение
Внешние соединения бывают левыми или правыми. Запрос, в котором участвуют таблицы с левым внешним соединением (LEFT JOIN или *= в SQL), выводит все записи таблицы "один", в независимости от того, имеются ли соответствующие им записи в таблице "многие". И наоборот, запрос, в котором участвуют таблицы с правым внешним соединением (RIGHT JOIN или =* в SQL), выводит все записи таблицы "многие", в независимости от того, имеются ли соответствующие им записи в таблице "один".
Рассмотрим в качестве примера, как с помощью левого внешнего соединения создать запрос в базе данных "Борей" (Northwind), который обнаруживает клиентов, не сделавших ни одного заказа:
-
Создайте новый запрос и добавьте в него таблицы "Клиенты" (Customers) и "Заказы" (Orders). Поскольку эти таблицы связаны отношением "один-ко-многим", между ними сразу появляется соединяющая линия.
-
Выделите и перетащите в бланк запроса поле "Название" (CompanyName) таблицы "Клиенты" и поле "КодЗаказа" (Orderld) таблицы "Заказы".
-
Выполните запрос и посмотрите, сколько записей будет возвращать запрос: 830.
-
Вернитесь в режим Конструктора. Щелкните правой кнопкой мыши на линии, соединяющей таблицы, и выберите из контекстного меню команду
Параметры объединения
(Join Properties). Появится диалоговое окно, представленное на рис. 4.26. В данном окне показаны имена связанных полей в таблицах. При этом таблица на стороне "один" считается левой (независимо от того, как она расположена в окне Конструктора), а таблица на стороне "многие" — правой. Ниже расположены три переключателя:
-
"1" задает внутреннее соединение;
-
"2" — левое внешнее соединение;
-
"3" — правое внешнее соединение.
Внутреннее соединение
Внутреннее соединение
Внутреннее соединение двух таблиц по одному полю в реляционной базе данных строится на основе отношения "один-ко-многим". Примером может служить демонстрационная база данных "Борей" (Northwind), в которой все соединения являются внутренними соединениями по одному полю на основе указанного отношения. В ходе разработки баз данных, в которых предполагается использование запросов на основе внутренних соединений, придерживайтесь следующих правил.
-
Каждая таблица "один" должна иметь первичный ключ с уникальными.значениями. Отсутствие повторений значений поля или полей первичного ключа в таблице Access устанавливает автоматически.
-
Отношение "многие-ко-многим" реализуйте на основе промежуточной таблицы, которая связана с каждой из двух таблиц отношением "многие-к-одному". Для обеих связей промежуточная таблица будет находиться со стороны "многие".
-
Необходимо извлечь повторяющиеся данные в новую таблицу и связать ее с таблицей, из которой эти данные были получены, отношением "многие-к-одному". Основная цель — однозначно определить извлеченные данные. Часто для этого приходится использовать первичный ключ, состоящий из нескольких полей. Для автоматизации работы по нахождению и извлечению повторяющейся информации можно использовать Мастер по анализу таблиц Microsoft Access. Этот мастер запускается при выборе команды меню
Сервис, Анализ, Таблица
(Tools, Analysis, Table).
В качестве примера использования запроса на основе внутреннего соединения по одному полю в базе данных "Борей" (Northwind) построим отчет с указанием марки товара, его поставщика, единицы измерения товара и его цены:
-
Если база данных "Борей" открыта, закройте все окна, кроме окна
База данных
(Database). Если база данных "Борей" не загружена, загрузите ее.
-
Щелкните по ярлыку
Запросы
(Queries) на панели объектов окна
База данных
(Database), чтобы открыть список запросов, а затем нажмите кнопку
Создать
(New) для создания нового запроса. В появившемся диалоговом окне
Новый запрос
(New Query) выделите элемент
Конструктор
(Design View) и нажмите кнопку
ОК.
Access отображает диалоговое окно
Добавление таблицы
(Show Table) поверх пустого окна запроса.
-
Выберите таблицу "Поставщики" (Suppliers) и добавьте ее в запрос. Access покажет список полей таблицы в верхней панели окна запроса.
-
Добавьте также таблицу "Товары" (Products) и закройте диалоговое окно
Добавление таблицы
(Show Table). Access добавляет список полей таблицы "Товары" (Products) в окно запроса и изображает соединение полей "КодПоставщика" (SupplierlD) двух таблиц (рис. 4.20). Соединение создается автоматически, т. к. поле "КодПоставщика" является ключевым в таблице "Поставщики" и в таблице "Товары" найдено поле с тем же именем (внешний ключ). Отображаемое отношение является отношением "один-ко-многим".
Выполнение запроса Чтобы посмотреть...
-
В окне базы данных на панели объектов выбрать ярлык
Запросы
(Queries).
-
Выделить нужный запрос в списке запросов и нажать на кнопку
Открыть
(Open) или дважды щелкнуть левой кнопкой мыши на нужном запросе.
После этого на экране появляется таблица, которая содержит только те записи, которые удовлетворяют критериям отбора, указанным в запросе, и те поля, которые указаны в бланке запроса. Если в запросе указан порядок сортировки записей, они выводятся на экран в соответствующем порядке.
Внешне отображение результатов запроса не отличается от отображения таблицы. Все режимы работы с таблицей, описанные в
гл. 2,
применимы и к результирующей таблице запроса. С ней можно работать так же, как и с обычной таблицей, в частности не только просматривать, но и изменять данные. Изменения сохраняются в записях базовой таблицы, на основе которой построен запрос. Если запрос создан на основе двух и более связанных таблиц, то не всегда столбцы в запросе можно редактировать.
(Подробнее об этом см. следующий раздел.)
Для выполнения запроса из режима Конструктора достаточно просто переключиться
в Режим таблицы
(Datasheet View) с помощью кнопки
Вид
(View) на панели инструментов, как мы это уже не раз делали, или с помощью команды
Режим таблицы
(Datasheet View) из меню
Вид
(View).
В Access 2002 запрос можно открыть не только в режиме Таблицы. Вы можете выполнить обработку результатов запроса и получить на их основе сводную таблицу или диаграмму, аналогичные тем, которые можно создать на базе таблицы Excel. Это новое удобное средство обработки данных запроса мы рассмотрим подробно в
гл. 8.
Выражения в Access
Выражения в Access
Каждое выражение может содержать один или несколько операторов и одну или несколько констант, идентификаторов или функций. Выражение может быть сколь угодно сложным.
-
Константы —
характеризуют неизменные значения. Их часто используют для создания значений по умолчанию и для сравнения значений в полях таблиц. Значения констант определяются пользователем при вводе выражения. (Например, 09, страна фирмы изготовителя Швеция.)
-
Идентификаторы
— это имена объектов в Access (например, полей таблиц или запросов), которые при вычислении выражений заменяются их текущими значениями (для определения этой операции обычно используется термин
возвращают).
Например, идентификатор имени поля [Household Inventory] в выражении возвращает значение поля Household Inventory из текущей выделенной записи. Именованные константы и переменные, применяемые в программах Visual Basic для приложений (VBA), тоже являются идентификаторами. Существует несколько встроенных именованных констант, служащих идентификаторами: True,
False,
Yes, No И Null.
Замечание
Если имя поля или таблицы содержит пробелы, его идентификатор обязан в выражении заключаться в квадратные скобки. Чтобы упростить ввод идентификаторов, рекомендуется не использовать пробелы в названиях таблиц, полей в таблицах и названиях других объектов Access.
-
Функции
возвращают в выражение значение вместо имени функции. В отличие от идентификаторов, большинство функций требуют заключать в скобки свои-аргументы — идентификаторы или значения подвыражений. Например, функция Date (), имеющая пустой список аргументов, возвращает текущую дату.
-
Операторы —
обычные значки арифметических операций (+, -, *, /) и другие символы и аббревиатуры. Большинство из них эквивалентны операторам традиционных языков программирования типа Basic. Некоторые — специфичны для Access или SQL, например Between или Like. Используемые в операции константы, идентификаторы и функции называются
операндами.
Для создания выражений в Access существует шесть категорий операторов: арифметические, операторы присваивания, логические операторы, операторы конкатенации, идентификации и сравнения с образцом.
Ниже рассмотрены:
-
типы операторов;
-
идентификаторы объектов и функций.
В данной главе мы рассмотрели,
Выводы
В данной главе мы рассмотрели, как можно создавать запросы, которые обеспечивают выборку данных из баз данных Access. Познакомились с применением Мастера запросов и Конструктора запросов при создании и изменении запросов. Научились выполнять запросы, выводить их на печать и передавать результаты запросов в другие приложения, узнали о правилах создания выражений в Access. Для ввода выражений в запросах мы использовалИ'Построитель выражений.
В
гл. 8
мы вновь остановимся на применении выражений, в частности на формировании запросов, и научимся создавать запросы, изменяющие данные в таблицах Access и помогающие анализировать эти данные.
Запросы и фильтры
Запрос на выборку содержит условия отбора данных и возвращает выборку, соответствующую указанным условиям, без изменения возвращаемых данных. В Microsoft Access существует также понятие
фильтра,
который в свою очередь является набором условий, позволяющих отбирать подмножество записей или сортировать их. Сходство между запросами на выборку и фильтрами заключается в том, что и в тех и в других производится извлечение подмножества записей из базовой таблицы или запроса. Однако между ними существуют различия, которые нужно понимать, чтобы правильно сделать выбор, в каком случае использовать запрос, а в каком — фильтр.
Основные отличия запросов и фильтров заключаются в следующем.
-
Фильтры не позволяют в одной строке отображать данные из нескольких таблиц, т. е. объединять таблицы.
-
Фильтры не дают возможности указывать поля, которые должны отображаться в результирующем наборе записей, они всегда отображают все поля базовой таблицы.
-
Фильтры не могут быть сохранены как отдельный объект в окне базы данных (они сохраняются только в виде запроса).
-
Фильтры не позволяют вычислять суммы, средние значения, подсчитывать количество записей и находить другие итоговые значения.
Запросы могут использоваться только с закрытой таблицей или запросом. Фильтры обычно применяются при работе в режиме Формы или в режиме Таблицы для просмотра или изменения подмножества записей. Запрос можно использовать:
-
для просмотра подмножества записей таблицы без предварительного открытия этой таблицы или формы;
-
для того чтобы объединить в виде одной таблицы на экране данные из нескольких таблиц;
-
для просмотра отдельных полей таблицы;
-
для выполнения вычислений над значениями полей.
Запросы с параметрами
Запросы с параметрами
Запрос в Access является объектом, который сохраняется в файле базы данных и может многократно повторяться. Все запросы, которые мы демонстрировали до сих пор, содержали конкретные значения дат, названий, имен и т. д. Если требуется повторить такой запрос с другими значениями в условиях отбора, его нужно открыть в режиме Конструктора, изменить условие и выполнить. Чтобы не делать многократно этих операций, можно создать запрос с параметрами. При выполнении такого запроса выдается диалоговое окно
Введите значение параметра
(Enter Parameter Value), в котором пользователь может ввести конкретное значение и затем получить нужный результат.
Покажем, как создавать запросы с параметрами на примере запроса "Отсортированный список товаров", который мы создавали ранее. Теперь мы с помощью этого запроса попробуем отобрать товары, поставляемые определенным поставщиком. Для этого:
-
Откройте данный запрос в режиме Конструктора.
-
Чтобы определить параметр запроса, введите в строку
Условие отбора
(Criteria) для столбца "Название" (CompanyName) вместо конкретного значения слово или фразу и заключите их в квадратные скобки, например [Поставщик:]. Эта фраза будет выдаваться в виде приглашения в диалоговом окне при выполнении запроса.
-
Если вы хотите, чтобы Access проверяла данные, вводимые в качестве параметра запроса, нужно указать тип данных для этого параметра. Обычно в этом нет необходимости при работе с текстовыми полями, т.к. по умолчанию параметру присваивается тип данных
Текстовый
(Text). Если же данные в поле запроса представляют собой даты или числа, рекомендуется тип данных для параметра определять. Для этого щелкните правой кнопкой мыши на свободном поле в верхней части запроса и выберите из контекстного меню команду
Параметры
(Parameters) или выполните команду меню
Запрос, Параметры
(Query, Parameters). Появляется диалоговое окно
Параметры запроса
(Query Parameters), представленное на рис. 4.31.
|