Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторный практикум по Access 2003_сложный.doc
Скачиваний:
108
Добавлен:
18.02.2016
Размер:
3.81 Mб
Скачать

10. Запросы на добавление записей

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

11. Запросы на удаление записей

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

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

Лишь в том случае, если в результате запроса присутствуют только подлежащие удалению записи, следует преобразовать запрос-выборку в запрос на удаление.

Для этого в строке меню выберите команду«Запрос»«Удаление». После этого MS Access выключает в бланке запроса строки «Сортировка» и «Вывод на экран». Для запросов на удаление эти строки не нужны. Кроме того, для всех колонок бланка запроса в новой строке «Удаление» отображается текст «Условие». Однако критерии при этом не изменяются.

Если выполнить запрос выбором пиктограммы «Выполнить», MS Access не отобразит на экране результат выполнения запроса. Вместо него появится сообщение о том, сколько записей будет удалено в исходной таблице. Вы можете прервать процесс удаления нажатием кнопки «Отмена». Однако нажатие «OK» приводит к безвозвратному удалению записей, удовлетворяющих критериям запроса.

12. Запросы-обновления записей таблицы

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

Сначала создайте новый запрос выбора и введите критерии для выбора изменяемых записей. Только в том случае, если результат запроса отвечает заданным требованиям, следует преобразовать его в запрос замены. Для этого выберите команду «Запрос»«Обновление». При этом будут выключены строки «Вывод на экран» и «Сортировка» в бланке запроса. Обе эти строки не нужны для запроса замены. Вместо них включается новая строка «Обновление». В эту строку следует ввести новые выражения для заменяемых записей. Обратите внимание, что тип данных выражения должен совпадать с типом данных поля исходной таблицы. Например, если вы хотите обновить записи поля «Summa» таблицы «Товары», значения которых вычислены и находятся в таблице «Сумма», то сформируйте запрос на обновление, как показано на рисунке 2.9.

Задания

1. Создайте запрос на выборку, в результате выполнения которого можно отобразить список всех продавцов с окладом в заданном диапазоне с переменными границами. Запрос назовите «01_Диапазон окладов».

2. Выберите всех поставщиков, создав запрос «02_Города поставщиков», проживающих в определенном городе, название которого не известно заранее.

3. Отсортируйте список товаров сначала по наименованию товара, а затем по цене продажи, сконструировав запрос «03_Сортировка товаров».

4.1 Создайте запрос на создание таблицы «Сумма», где, применив механизм группировки, вычислите значения суммы заказанных товаров по каждому заказу. Воспользуйтесь при этом только полем «Kod» таблицы «Заказы», и новым полем «Итого». Итоговые значения определяются как произведение значений полей «Kol» таблицы «Заказано» и полей «Cena_pr» таблицы «Товары». Назовите запрос «04\1_Сумма заказанных товаров»

4.2 Сконструируйте запрос на обновление поля «Summa» таблицы «Заказы», куда поместите вычисленные значения сумм по каждому заказу. Назовите его «04\2_Обновление сумм заказов»

5. Создайте запрос-выборку товаров, имеющихся на складе, причем поле «Nal» не должно отражаться на экране. Назовите его «05_Наличие товаров».

6. Создайте запрос-выборку товаров«06_Тип-склад» определенного типа в определенной упаковке имеющихся на складе.

7. Сконструируйте перекрестный запрос, заголовками строк которого являются наименования товаров и фирм, заголовками столбцов - вид фасовки товаров, подведите итоги, вычислив минимальное значение цены покупки товара (поле «Cena_p»). Пример выполнения запроса представлен на рисунке 2.10. Назовите его «07_Товары (перекрестный запрос)»

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

Этап 1. Подсчитать сумму оклада в зависимости от категории и стажа;

Этап 2. Подсчитать сумму начислений и сумму вычетов в данном конкретном месяце;

Этап 3. Подсчитать пенсионные отчисления;

вычислить сумму подоходного налога в зависимости от начисленной суммы, вычитая пенсионные отчисления;

Этап 4. Подсчитать сумму выдачи.

ЭТАП 1.

8 Чтобы правильно подсчитать значение оклада сотрудника сначала необходимо определить стаж работы сотрудника, для чего создайте запрос «08_Стаж продавцов» на добавление таблицы «Определение стажа». В формируемую таблицу добавьте поле «Kod» таблицы «Продавцы» и создайте новое поле «Стаж», в котором вычислите стаж сотрудника как разность между текущим годом и годом поступления на работу, используя функции Data() и Year().

9.1 Создайте таблицу«Показатели», в которой одно единственное поле «MRP» со значением 10930. Для подсчета оклада создайте запрос на обновление поля «Oklad» таблицы «Продавцы». В запрос включите таблицы «Определение стажа», «Продавцы», «Константы», «Показатели». Оклад вычисляется как произведение значений поля «Const» таблицы «Константы» на значения поля «MRP» таблицы «Показатели», то есть [Константы]![const]*[Показатели]![MRP]. Поскольку при определении константы необходимо учитывать, стаж и категорию сотрудника, то вторым полем проектируемого запроса будет поле «Стаж» таблицы «Определение стажа», а третьим поле «Cat» (категория) таблицы «Константы». Для второго и третьего полей укажите условия отбора: стаж, вычисленный в таблице «Определение стажа», должен входить в диапазон пороговых значений стажа таблицы «Константы», категория таблицы «Константы» должна совпадать с категорией таблицы «Продавцы». Запрос назовите «09\1_Подсчёт оклада».

9.2 Создайте запрос на добавление поля «Oklad» из таблицы «Продавцы» в таблицу «Начисления».

ЭТАП 2.

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

11 Промежуточная таблица «Месяц_расчет» не должна содержать данных и перед каждым начислением зарплаты ее необходимо очистить от данных. Для этого воспользуйтесь запросом на удаление, который назовите «11_Очистка таблицы расчета».

12.1 Подсчитаем сумму премии продавцам, которая определяется как 1% от продаж, если сумма продаж за месяц больше 7000. Для этого разработайте запрос на добавление новой таблицы «Сумма1», при помощи которого определите сумму заказанных за конкретный месяц товаров. Назовите запрос «12\1_Запись суммы по месяцам». Бланк запроса представлен на рисунке 2.11.

12.2 Чтобы определить численное значение суммы премии, создайте запрос на обновление «12\2_Запись премии по месяцам». В бланк запроса включите таблицы «Начисления» и «Сумма1». Первым полем этого запроса сделайте обновляемое поле «Prem» таблицы «Начисления», где в строке «Обновление» запишите с помощью построителя формулу вычисления премии: итоговое значение суммы проданных за месяц товаров, вычисленное в таблице «Сумма1», умножается на коэффициент 0,01. Во втором поле запроса выберите только те записи поля «Итого» таблицы «Сумма1», значения которых больше 7000. Бланк запроса представлен на рисунке 2.12.

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

12.3 Создайте запрос на добавление, содержащий четыре поля: «Kod_prod», «Mes» (используется таблица «Начисления»), «Всего начислено», «Всего вычеты» (формируются с помощью построителя). Для того, чтобы запрос был универсальным и мог использоваться ежемесячно в поле «Mes» введите параметр, запрашивающий, за какой месяц производить расчет. Назовите запрос «12\3_всего начисления и вычеты»

ЭТАП 3.

13 Создайте запрос на обновление поля «Pens» в таблице «Месяц_расчет», который вычисляется как 10 процентов от оклада. (см. Рисунок 2.13) Назовите его «13_Обновление пенсионных».

ЭТАП 4.

14 Создайте запрос на обновление «14_Подоходный налог», обновить поле «Pod_nal» в таблице «Месяц_расчёт», вычисляемый из общей суммы начисления, вычитая пенсионный и МРП/10, находим 10 процентов от этой суммы. (см. Рисунок 2.14)

Рисунок 2.14

ЭТАП 5.

15 Создайте запрос на обновление поля «Itog» в таблице «Месяц_расчёт», с учетом вычетов: Всего вычтено, пенсионные отчисления, подоходный налог. Запрос назовите «15_К выдаче».