Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Информатика в программе Access на лето

.pdf
Скачиваний:
37
Добавлен:
10.04.2015
Размер:
1.27 Mб
Скачать

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

16.На какую сумму каждых стройматериалов закупила каждая стройка? Запрос оформить в перекрестной форме.

3.ПРИМЕРЫ ВЫПОЛНЕНИЯ ЗАПРОСОВ

3.1.Запросы выбора

Пусть нужно узнать телефоны директоров заводов, выпускающих строительные материалы с единичным весом от 1 до 1000 кг.

Для решения этой задачи выберем таблицы ЗАВОД и СТРОЙМАТ. Для выбора таблиц в окне базы данных щелкнем по закладке Запросы, а затем по кнопке Создать. Откроется окно Новый запрос. В этом окне нажмем на кнопку Конструктор, а затем на кнопку ОК. Появится окно конструктора запроса, а на его фоне — окно Добавление таблицы. В этом окне щелчком мыши выделяем имя таблицы ЗАВОД. Нажмем кнопку Добавить — появится одностолбцовый список полей таблицы ЗАВОД. Аналогично включим таблицу СТРОЙМАТ.

Включим в состав запроса поле ТЛФ_Д из таблицы ЗАВОД и поле ВЕС из таблицы СТРОЙМАТ двойным щелчком по именам этих полей. Установка условий отбора строк осуществляется следующим образом: в таблице QBE-области щелкнем в клетке, находящейся в строке Условия отбора столбца ВЕС. В этой ячейке появится курсор. С клавиатуры введем Between 1 And 1000. Вид окна конструктора запросов для этого примера приведен на рис. 20.

Рис. 20

30

Для выполнения запроса следует ввести команду Запрос/Запуск или нажать кнопку в пиктографическом меню с изображением восклицательного знака. Появится окно, в котором выведен результат выполнения запроса.

3.2. Параметрические запросы

Превратим запрос, разработанный в предыдущем примере, в параметрический. Для этого в режиме конструктора в строке Условие отбора в колонке ВЕС спецификации запроса заменим выражение Between 1 And 1000 на выражение Between [Мин вес] And [Макс вес], т.е., оставив символы Between и And на месте, заменим только цифры 1 и 1000 на текст в квадратных скобках [название параметров]. Затем из меню Запрос следует выбрать команду Параметры... Появится диалоговое окно Параметры запроса, приведенное на рис. 21.

Рис. 21

В столбце Параметр следует повторить тот же текст, который был введен в спецификации запроса, только без квадратных скобок. В столбце Тип данных вводится тип данных поля ВЕС таблицы СТРОЙМАТ. Для ввода типа данных нужно щелкнуть в столбце Тип данных и выбрать его из выпавшего списка. При выполнении этого запроса сначала появится окно с названием параметра Мин вес, а затем окно с названием параметра Макс вес. В поле ввода этих окон следует ввести нужную цифру (значение параметра) и нажать кнопку ОК. После выполнения запроса появится такое же окно, как и в предыдущем примере.

3.3. Перекрестные запросы

Представим в виде перекрестного запроса количество потребляемых стройками стройматериалов. Вся требуемая информация содержится в одной таблице ПОТРЕБ, которую и вводим в спецификацию запроса окна конст-

31

руктора запросов. Из таблицы ПОТРЕБ выбираем все три поля: Н_СТРМ, Н_СТР и ПОТРЕБ. Вводим команду меню Запрос/Перекрестный. В спецификации запроса появляется строка Перекрестная таблица и строка Группо-

вая операция. В строке Перекрестная таблица в колонке Н_СТРМ щелкаем мышью и в раскрывшемся списке указываем пункт Заголовки столбцов; это означает, что названия стройматериалов будут записаны в заголовках столбцов. В строке Перекрестная таблица в колонке Н_СТР щелкаем мышью и в раскрывшемся списке указываем пункт Заголовки строк; это означает, что названия строек будут записаны в заголовках строк. В строке Перекрестная таблица щелкаем мышью в колонке ПОТРЕБ и в раскрывшемся списке вводим пункт Значение, что означает, что на пересечении строк с названиями строек и столбцов с названиями стройматериалов будут записаны соответствующие числа из колонки таблицы ПОТРЕБ базы данных.

В строке Групповая операция в колонках Н_СТРМ, Н_СТР и ПОТРЕБ вводим соответственно Группировка, Группировка, Sum.

Вид окна конструктора запроса приведен на рис. 22.

Рис. 22

После выполнения запроса получим таблицу, показанную на рис. 23.

Рис. 23

32

3.4. Групповые операции

Создайте файл новой базы данных с именем ТОРГОВЛЯ. Как описано выше, введите единственную таблицу ТОРГОВЛЯ, имеющую следующий вид:

Фамилия продавца

Объем операции

Фамилия покупателя

Фунт

453,00

Иванов

Фунт

34,89

Иванов

Фунт

145,77

Петров

Корейко

89,00

Иванов

Корейко

12,45

Петров

Фунт

577,89

Сидоров

Корейко

90,50

Иванов

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

Создадим новый запрос, построенный по таблице ТОРГОВЛЯ.

В строку Поле спецификации введем все поля таблицы ТОРГОВЛЯ.

Нажмем кнопку Групповые операции (со знаком ) в пиктографическом меню. В спецификации появится строка с именем Групповая операция.

Щелкнем мышью в поле Объем операции строки Групповая операция

спецификации запроса. В указанной клетке спецификации появится изображение манипулятора выпадающего списка. Откроем список и выберем операцию суммирования Sum.

Выполним запрос.

Спецификация запроса будет иметь следующий вид:

Поле

Фамилия

Объем операции

Фамилия

продавца

покупателя

 

 

Таблица

Торговля

Торговля

Торговля

Групповая операция

Группировка

Sum

Группировка

Сортировка

 

 

 

Вывод на экран

|X|

|X|

|X|

Условие отбора

 

 

 

Результат выполнения запроса будет иметь вид следующей таблицы:

Фамилия продавца

SumOfОбъем операции

Фамилия покупателя

Корейко

179,5

Иванов

Корейко

12,45

Петров

Фунт

577,89

Сидоров

Фунт

487,89

Иванов

Фунт

145,77

Петров

В рассматриваемом примере с помощью функции Группировка осуществ-

лена проверка содержимого полей Фамилия продавца и Фамилия покупателя

во всех записях таблицы базы данных ТОРГОВЛЯ на совпадение комбина-

33

ций полей Фамилия покупателя и Фамилия продавца и совпадающие комби-

нации сгруппированы каждая в свой блок. Отдельно для каждого блока применена функция суммирования в поле Объем операций. Результаты суммирования помещены в столбце запроса SumOfОбъем операции.

Действительно, совпадение комбинаций полей Фамилия продавца и Фа-

милия покупателя произошло дважды:

Фунт — Иванов в первой и второй строках таблицы ТОРГОВЛЯ. В результате две этих строки заменены одной строкой, в которой в поле

SumOfОбъем операции помещена сумма 453,00 + 34,89 = 487,89.

Корейко — Иванов в четвертой и седьмой строках таблицы ТОРГОВЛЯ. В результате две строки заменены одной строкой, в которой в поле

SumOfОбъем операции помещена сумма 89,00 + 90,50 = 179,50.

Такое упорядочение является результатом выполнения функции группи-

ровки для комбинаций полей Фамилия продавца и Фамилия покупателя.

Рассмотрим следующие задачи.

Каков объем торговых операций продавца Фунта?

Спецификация для этого запроса имеет следующий вид:

Поле

Фамилия

Объем операции

Фамилия

продавца

покупателя

 

Торговля

Таблица

Торговля

Торговля

Групповая операция

Группировка

Sum

Count

Сортировка

 

|X|

 

Вывод на экран

|X|

|X|

Условие отбора

Фунт

 

 

В этой задаче группировка осуществляется только в одном столбце Фамилия продавца, поэтому записи будут сгруппированы каждая в свой блок только по этому полю. Использование функции Count (количество) в поле Фамилия покупателя позволяет получить количество записей исходной таблицы, объединенных в каждом блоке, т.е. количество покупателей у каждого продавца. Так как в строке Условие отбора столбца Фамилия продавца указано значение Фунт, то будет отобран для вывода только один блок (одна строка) с этим значением.

Какой оборот дал каждый клиент?

Спецификация для этого запроса имеет следующий вид:

Поле

Фамилия

продавца

 

Таблица

Торговля

Групповая операция

Count

Сортировка

 

Вывод на экран

|X|

Условие отбора

 

Объем операции

Фамилия

покупателя

 

Торговля

Торговля

Sum

Группировка

|X|

|X|

34

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

Какова величина полного оборота?

Спецификация для этого запроса имеет следующий вид:

Поле

Фамилия продавца

Объем операции

Фамилия покупателя

Таблица

Торговля

Торговля

Торговля

Групповая операция

Count

Sum

Count

Сортировка

 

 

|X|

Вывод на экран

|X|

|X|

Условие отбора

 

 

 

В этой задаче среди групповых операций функция группировки не встречается ни в одном поле спецификации, вся таблица базы данных ТОРГОВЛЯ представляет собой один блок, в котором применены групповые операции Sum и Count, поэтому будет выведено общее количество торговых операций, которые привели к получению суммы полного оборота.

3.5. Вычисляемые поля

Рассмотрим пример. Пусть в базе данных СКЛАД нужно определить, на какую сумму произвел продукции каждый завод.

Для разработки такого запроса достаточно использовать всего одну таблицу СТРОЙМАТ с полями Н_ЗАВ, ЦЕНА, ПРОИЗВ. Выведем в область спецификации запроса поле Н_ЗАВ. Для создания вычисляемого поля щелкаем мышью на следующем пустом заголовке поля и вводим с клавиатуры выражение ЦЕНА*ПРОИЗВ и нажимаем на клавишу [Enter]. Выражение в заголовке вычисляемого поля примет следующий вид:

Выражение1:[ЦЕНА]*[ПРОИЗВ],

где Выражение1 — имя вычисляемого поля, присвоенное по умолчанию. Так как имеются заводы, выпускающие не один, а несколько видов про-

дукции, а нужно найти сумму всей продукции, выпускаемой каждым заводом, вводим групповые операции с функцией группировки в поле Н_ЗАВ и с функцией суммирования в вычисляемом поле.

На экран выводим поля Н_ЗАВ и Выражение1. Сохраняем запрос под именем ПРОИЗВОДСТВО. Вид готового окна конструктора запроса приведен на рис. 24, а вид выполненного запроса — на рис. 25.

35

Рис. 24

Рис. 25

Контрольные вопросы

1.Как отбираются таблицы в запрос?

2.Как отредактировать запрос?

3.Как выполнить запрос?

4.Строки какой таблицы повторяются в объединенном запросе?

5.Сколько строк имеет объединенная таблица при объединении таблиц?

6.Какие строки таблиц будут потеряны при объединении их в запросе?

7.Как вводится условие?

8.Какой смысл имеет несколько условий в одном запросе?

9.Для чего служит строка или в QBE-области конструктора запроса?

10.Что такое параметрические запросы и как их создать?

11.Что такое перекрестные запросы и как их создать?

12.Как создать запрос с групповыми операциями?

13.Расскажите о групповых операциях. Приведите примеры.

14.Какие групповые операции вы знаете?

15.Какой смысл имеет Групповая операция в нескольких полях?

16.Как найти сумму значений в поле всей таблицы?

17.Как сосчитать число записей во всей таблице?

18.Что такое вычисляемые поля? Как их ввести?

ЛАБОРАТОРНАЯ РАБОТА 3. СОЗДАНИЕ ОТЧЕТОВ 1. ЗАДАНИЕ

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

2. ПРИМЕРЫ СОЗДАНИЯ ОТЧЕТОВ

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

36

четы служат для отбора из базы данных только требуемой информации и вывода ее на бумагу или на экран ПК в удобной и наглядной форме. В качестве источника информации для отчета можно использовать таблицы и запросы.

2.1.Создание автоотчета

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

Рис. 26

Для получения этого запроса в спецификацию запроса ПРОИЗВОДСТВО (см. рис. 24) перенесены поля Н_СТРМ, ЦЕНА, ПРОИЗВ и введено вычисляемое поле ЦЕНА*ПРОИЗВ.

Создание автоотчета начинается со щелчка мышью на кнопке Отчеты, а затем на кнопке Создать окна базы данных. Появляется окно Новый отчет. Вид этого окна показан на рис. 27.

Рис. 27

37

Щелкнем мышью на пункте Автоотчет: ленточный. Далее следует указать источник информации, которая будет отображена в отчете. Для этого открываем окно выпадающего списка и щелкаем мышью на запросе ПРОИЗВОДСТВО. После этого нажимаем кнопку ОК. В результате появляется автоотчет Производство, показанный на рис. 28. Сохраняем отчет ко-

мандой меню Файл/Сохранить под именем Производство.

Рис. 28

Создание автоотчета в столбец осуществляется в аналогичном порядке.

2.2. Создание отчета с использованием мастера

Мастер отчетов может включать в состав отчета информацию как из одной, так и из нескольких таблиц и запросов. Отчет создается не автоматически, а в диалоге с пользователем, в соответствии с его указаниями. Для примера рассмотрим порядок создания отчета, в котором в качестве источника информации используются поля Н_ЗАВ и ТЛФ_Д из таблицы ЗАВОД, а также поля Н_СТРМ и Выражение1 из запроса ПРОИЗВОДСТВО.

Создание отчета начинается со щелчка мышью на кнопке Отчеты, а затем на кнопке Создать окна базы данных. Появляется окно Новый отчет. Щелкнем мышью на пункте Мастер отчетов. Источник информации для отчета в выпадающем списке этого окна можно не указывать. Нажимаем кнопку ОК. Появляется окно Создание отчетов. В этом окне раскрываем выпадающий список Таблицы и запросы и щелкаем мышью на имени таблицы ЗАВОД. В области Доступные поля появляется список полей таблицы ЗАВОД. Вид окна Создание отчетов в этот момент приведен на рис. 29.

38

Рис. 29

В окне Создание отчетов можно отобрать нужные поля или изменить порядок их расположения в отчете. Для этого в области Доступные поля щелкаем на нужном имени поля, а затем на кнопке >. Имя этого поля скопируется в область Выбранные поля. Затем переносим следующее поле и таким же образом все нужные поля. В отчете отобранные поля будут располагаться в том же порядке (слева направо), в каком они располагаются в правом списке (сверху вниз). В нашем примере из таблицы ЗАВОД переносим поля Н_ЗАВ и ТЛФ_Д. Затем снова раскрываем выпадающий список Таблицы и запросы и в нем выбираем имя запроса ПРОИЗВОДСТВО. В область Выбранные поля переносим поля запроса Н_СТРМ и Выражение1. Закончив отбор полей, нажимаем кнопку Далее>.

Появляется следующее окно Создание отчетов с надписью Выберите вид представления данных. В этом окне ничего не вводим и нажимаем кноп-

ку Далее>.

Появляется очередное окно Создание отчета с надписью Добавить уровни группировки? В этом окне ничего не вводим и нажимаем кнопку Далее>.

Появляется следующее окно Создание отчета с надписью Выберите по-

рядок сортировки и вычисления, выполняемые для записей. Продемонстриру-

ем возможность проведения групповых вычислений, для чего нажмем кнопку Итоги... Появляется окно Итоги, в котором вводим опции Sum и Вычислять проценты, после чего нажимаем кнопку ОК. Происходит возврат в окно Создание отчета, в котором нажимаем кнопку Далее>.

Появляется очередное окно Создание отчетов с надписью Выберите вид макета для отчета. Делаем выбор и нажимаем кнопку Далее>.

Появляется следующее окно Создание отчета с надписью Выберите требуемый стиль. Делаем выбор и нажимаем кнопку Далее>.

39