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

Итоговые запросы

Для вычисления итоговых значений надо установить групповые операции. Это можно сделать двумя способами: 1) в тот момент, когда указатель мыши находится внутри бланка QBE, нажать правую кнопку, а затем в появившейся вкладке нажать кнопку Групповые операции ( ), чтобы в бланке QBE появилась строка Групповые операции; 2) в главном меню выбрать Вид→Групповые операции. Access использует установку Группировка в строке Групповая операция для любого поля, внесенного в бланк запроса. Теперь записи по каждому полю группируются, но итог не подводится. При выполнении запроса выдается набор записей, включающий по одной строке для каждого уникального значения поля запроса – но без итогов. Для получения итогов необходимо заменить установку Группировка в строке Групповая операция на конкретную итоговую функцию. Эти функции приведены в таблице 13. Задать требуемую функцию можно, если ввести ее имя с клавиатуры в строке Групповая операция бланка запроса или выбрав ее в раскрывающемся списке.

В нашем примере требуется начислить оплату за больничный лист на основании оклада, а также в зависимости от стажа работы и продолжительности болезни. Для этого придется составить четыре запроса: «Стаж», «Дней болезни», «Сумма дней болезни»,

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

Рис. 29. Запрос «Стаж» в режиме конструктора

Запрос «Дней болезни» строится на основе таблицы «Больничный лист» и запроса «Стаж». В режиме конструктора нажимаем кнопку Отобразить таблицу ( ) на панели инструментов. Открывается окно Добавление таблицы (см. рис. 21). Добавляем требуемые объекты: таблицу «Больничный лист» из списка таблиц и запроса «Стаж» из списка запросов, после чего окно Добавление таблицы закрываем. Другой способ добавления объектов к проектируемому запросу состоит в перетаскивании левой кнопкой мыши требуемых объектов из окна базы данных. В верхнем поле бланка запроса появляются две таблицы, пока не связанных между собой. Связь устанавливается так же, как при составлении схемы данных, – перетаскиванием одноименных полей из одной таблицы в другую. Далее следует установить вид объединения, поскольку по умолчанию действует «один-к-одному», в то время как возможна ситуация, когда один сотрудник может за рассматриваемый период времени иметь более одного больничного листа. Для выбора вида объединения устанавливаем указатель мыши на линию связи и щелкаем. Затем выбираем параметры объединения, как показано на рис. 30. Появляется окно Параметры объединения, представленное на рис. 31. Выбираем вид связи «2».

Рис. 30. Изменение связи в запросе «Дней болезни»

Рис. 31. Выбор параметра объединения для запроса «Дней болезни»

Окно Параметры объединения можно также вызвать из главного меню, выбрав Вид→Параметры объединения.

Запрос «Дней болезни включает поля: Tab_N, FIO, K_Dolg, Stag, D_Beg, D_End и вычисляемое поле Dn_Bol. На рис. 32 данный запрос приведен в режиме конструктора.

Рис. 32. Запрос «Дней болезни» в режиме конструктора

Запрос «Сумма дней болезни» строится на основе запроса «Дней болезни» с использованием групповых операций. Открываем запрос «Дней болезни» в режиме конструктора. В строке Сортировка бланка запроса устанавливаем сортировку табельных номеров по возрастанию. Для этого в поле Tab_N наводим указатель мыши на строку Сортировка, после щелчка левой кнопкой появляется треугольник, нажимая на который выбираем способ сортировки, как показано на рис. 33. Затем устанавливаем Групповые операции и для поля Dn_Bol (дней болезни) выбираем функцию Sum. Выбор функции Sum осуществляется точно так же, как и выбор режима сортировки.

Запрос «Оплата» использует данные запроса «Сумма дней болезни» (в бланк запроса включаются поля: Tab_N, FIO, K_Dolg, Sum_Dn_Bol) и таблиц: «Должностные оклады» (включаются все поля) и «Процент оплаты Б/Л» (включается только поле Proc). Первым добавляется запрос, затем таблицы. Как и в предыдущем случае создаем связи и устанавливаем для каждой связи параметр объединения «2». В бланк запроса включаем вычисляемое поле Opl. Запрос в режиме конструктора приведен на рис. 34.

Рис. 33. Выбор режима сортировки

Рис. 34. Запрос «Оплата» в режиме конструктора

Пусть таблица «Больничные листы» содержит данные, приведенные на рис. 35. Тогда при выполнении запроса «Оплата» будут выведены записи, представленные на рис. 36.

Рис. 35. Содержимое таблицы «Больничные листы»

Рис. 36. Информация, выводимая при выполнении запроса «Оплата»