Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции Access.doc
Скачиваний:
1
Добавлен:
28.08.2019
Размер:
2.08 Mб
Скачать

6. Запросы

Запрос на выборку используется наиболее часто. При его выполнении данные, удовлетворяющие условиям отбора, выбираются из одной или из нескольких таблиц и выводятся в определенном порядке. Например, можно вывести на экран данные о фамилиях сотрудников, стаж которых более 15 лет (на основе таблицы Сотрудники).

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

Можно также использовать запрос на выборку, чтобы сгруппировать записи для вычисления сумм, средних значений, пересчета и других действий. Например, используя запрос на выборку, можно получить данные о среднем стаже сотрудников (на основе таблицы Сотрудники).

Для создания нового запроса надо в окне базы данных выбрать вкладку Запросы и щелкнуть по кнопке «Создать». Откроется окно "Новый запрос".

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

Простой запрос позволит создать с помощью Мастера запрос на выборку из определенных полей таблиц или других запросов. (Это наилучший способ создания запроса для начинающих пользователей.)

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

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

Ряд запросов нельзя создать непосредственно из окна Новый запрос:

Запрос с параметрами - это запрос, при выполнении которого в его диалоговом окне пользователю выдается приглашение ввести данные, на основе которых будет выполняться запрос.

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

  • На удаление записи.   Запрос на удаление удаляет группу записей из одной или нескольких таблиц. Например, запрос на удаление позволяет удалить записи о товарах, поставки которых прекращены или на которые нет заказов. С помощью запроса на удаление можно удалять только всю запись, а не отдельные поля внутри нее.

  • На обновление записи.   Запрос на обновление вносит общие изменения в группу записей одной или нескольких таблиц. Например, на 10 процентов поднимаются цены на все молочные продукты или на 5 процентов увеличивается зарплата сотрудников определенной категории. Запрос на обновление записей позволяет изменять данные в существующих таблицах.

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

  • На создание таблицы.   Запрос на создание таблицы создает новую таблицу на основе всех или части данных из одной или нескольких таблиц. Запрос на создание таблицы полезен при создании таблицы для экспорта в другие базы данных Microsoft Access или при создания архивной таблицы, содержащей старые записи.

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

Задание параметров производится в строке Условия отбора для соответствующих полей. Например, для того, чтобы Access предложил набрать фамилию в окне диалога, достаточно в строке параметра Условия отбора для поля "ФИО" ввести фразу (скобки тоже вводить): [Введите фамилию сотрудника]

Примеры выражений в условиях отбора:

Поле

Выражение

Описание

ПунктНазначения

"Киев"

Отображает заказы на доставку товаров в Киев.

ПунктНазначения

"Киев" Or "Минск"

Использует оператор Or для отображения заказов на доставку товаров в Киев или Минск.

ДатаОтгрузки

Between #05.01.95# And #10.01.95#

Использует оператор Between...And для отображения заказов на отгрузку товаров не ранее 5-янв-95 и не позднее 10-янв-95.

ДатаОтгрузки

#2/2/95#

Отображает заказы на отгрузку товаров 2-фев-95.

СтранаДоставки

In("Канада", "Великобритания")

Использует оператор In для отображения заказов на доставку товаров в Канаду или Великобританию.

СтранаДоставки

Not "США"

Использует оператор Not для отображения заказов на доставку товаров во все страны, за исключением США.

ИмяКлиента

Like "С*"

Заказы на доставку товаров клиентам, имена которых начинаются с буквы С.

Название

>="Н"

Отображает заказы на доставку товаров в фирмы, названия которых начинаются с букв, находящихся в диапазоне от Н до Я.

КодЗаказа

Right([OrderID], 2)="99"

Использует функцию Right для отображения заказов, код которых заканчивается на 99.

Название

Len([Название]) >Val(30)

Использует функции Len и Val для отображения заказов для фирм, названия которых состоят из более чем 30 символов.

Поле

Выражение

Описание

ДатаИсполнения

Between Date( ) And DateAdd("m", 3, Date( ))

Использует оператор Between...And и функции DateAdd и Date для отображения заказов, требующих исполнения в течение трех месяцев, начиная с сегодняшней даты включительно.

ДатаЗаказа

< Date( )- 30

Использует функцию Date для отображения заказов, сделанных ранее, чем 30 дней назад.

ДатаЗаказа

Year([ДатаЗаказа])=1996

Использует функцию Year для отображения заказов, сделанных в 1996 году.

ДатаЗаказа

DatePart("q", [ДатаЗаказа])=4

Использует функцию DatePart для отображения заказов на четвертый квартал.

ДатаЗаказа

DateSerial(Year ([ДатаЗаказа]), Month([ДатаЗаказа])+1, 1)-1

Использует функции DateSerial, Year и Month для отображения заказов на последний день каждого месяца.

ДатаЗаказа

Year([ДатаЗаказа])= Year(Now()) And Month([ДатаЗаказа])= Month(Now())

Использует функции Year и Month, а также оператор And для отображения заказов текущего года и месяца.

Пустые значения

Поле

Выражение

Описание

ОбластьДоставки

Is Null

Отображает заказы для клиентов, у которых поле «ОбластьДоставки» является пустым.

ОбластьДоставки

Is Not Null

Отображает заказы для клиентов, у которых поле «РайонДоставки» содержит какое-либо значение.

Факс

" "

Отображает заказы для клиентов, у которых нет факсимильного аппарата, то есть для тех клиентов, у которых поле «Факс» содержит пустую строку, а не значение Null.

Часть значения поля

Поле

Выражение

Отображает

ИмяКлиента

Like "С*"

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

ИмяКлиента

Like "*Импорт"

Выполненные заказы для клиентов, имена которых заканчиваются на слово «Импорт».

ИмяКлиента

Like "[А-Д]*"

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

ИмяКлиента

Like "*тр*"

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

ИмяКлиента

Like "Дом мод?"

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

Для доступа к запросам на изменение надо открыть пункт меню Запрос - в открывшемся списке вы увидите все виды запросов на изменение.

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

  • на физическом носителе информации (обычно это жесткий диск) требуется меньший объем пространства;

  • запрос может использовать обновленные версии любых записей, измененных со времени последнего запуска запроса.

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