Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабы в Acees.rtf
Скачиваний:
10
Добавлен:
31.08.2019
Размер:
3.36 Mб
Скачать

Способы выполнения задания

Для создания таблицы ЗАРПЛАТА существует два основных пути.

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

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

Выбор остается за Вами. При защите работы его следует обосновать. Лучше всего проверить оба пути и сравнить их.

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

Создание структуры таблицы зарплата

Для успешного копирования и поиска данных поле табельного номера должно совпадать по всем параметрам (имени, типу, размеру) с одноименным полем таблицы КАДРЫ.

Хорошим способом обеспечения этого условия является копирование структуры таблицы КАДРЫ в новую таблицу и последующая корректировка структуры последней. Для этого скопируйте закрытую таблицу и вставьте ее в ту же базу данных под новым именем. Выберите опцию Копировать только структуру. Откорректировать структуру новой таблицы можно в Конструкторе.

Запись в полученный файл сумм за один месяц

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

Далее, поскольку зарплату все получали в одном месяце, используйте для заполнения поля Месяц запрос на обновление поля Месяц для всех записей.

В реальном случае ввод данных о полученных суммах – очень ответственная задача. Суммы можно проставить вручную в открытой таблице ЗАРПЛАТА. Следует вводить различные суммы зарплат.

Запись сумм за последующие месяцы

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

="" Or Is Null .

Проверка новой таблицы

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

Создание запроса, сразу решающего задачу в полном объеме

Имеется проблема создания запроса, результатом которого будет таблица (ЗАРПЛАТА), содержащая большее число записей, чем исходная (КАДРЫ).

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

Вы уже сможете создать запрос на выборку, который даст нужный результат для одного месяца. Для этого в запросе, озаглавленном ОДИН_МЕСЯЦ, следует

  • взять из таблицы КАДРЫ поле табельных номеров;

  • создать вычисляемое поле Месяц: "Январь" ;

  • создать вычисляемое поле НоваяСумма: [Оклад]*1,1, в котором в очень упрощенном виде рассчитывается сумма зарплаты с премией 10%.

Проверьте, правильно ли выполняется запрос.

Суть дальнейшей задачи заключается в том, чтобы объединить несколько таких запросов, отличающихся только названием месяца. Для этого имеется средство – запрос на объединение. К сожалению, для него нет Конструктора и его требуется создавать на языке SQL (Structured Query Language).

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

В Конструкторе запросов для запроса ОДИН_МЕСЯЦ следует выбрать Режим SQL. Появится строка команды SQL. Если Вы знаете английский язык, то прочитать ее не составит труда. Выделите весь текст команды и скопируйте его в буфер обмена.

Создайте новый запрос в режиме Конструктора. Не выбирайте для него таблиц-источников. Не заполняйте таблицу данными. Выберите меню à Запрос à Запрос SQL à Объединение. Вы получите окно с текстом команды SQL. Текст начинается со слова SELECT.

Полностью сотрите содержимое окна и замените его на текст запроса ОДИН_МЕСЯЦ из буфера обмена. Вы получили команду, которая:

  • начинается со слова SELECT;

  • имеет заключенную в кавычки константу "Январь";

  • оканчивается точкой с запятой. Это конец всей команды.

Запрос на объединение содержит несколько фрагментов SELECT, объединенных словом UNION. Поэтому:

  • вставьте текст из буфера еще один раз;

  • замените точку с запятой в середине команды словом UNION, отделенным пробелами от остального текста;

  • замените во втором фрагменте слово "Январь" на слово "Февраль".

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

Создайте запрос создания таблицы, основанный на полученном запросе на объединение.

Внимание. Запрос на объединение не может одновременно являться запросом на создание таблицы, но запрос на создание таблицы может брать данные из запроса на объединение.

Выполнение последнего из созданных запросов приведет к желаемому результату.

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