
Informatika_Access_kursovik_2013 NEW
.pdf
Внимание. Поскольку формат представления чисел и текстов важен для отчета, а описание всех тонкостей заняло бы слишком много места, выделите свойство Формат данных и нажмите клавишу F1. Появится подсказка для выделенного свойства. Изучите раздел
Форматирование самостоятельно.
Результат работы
Демонстрация почтовых наклеек заданного вида в режиме предварительного просмотра.
Дополнительные задания
Разработать отчет, который позволит распечатать визитные карточки для сотрудников организации. Визитная карточка должна включать:
название организации (вводится как статический текст); логотип (подберите рисунок, который можно использовать в качестве
такового); фамилию, имя, отчество сотрудника; должность; телефон.
10. Создание экранной формы
Цель работы – облегчение ввода и корректировки данных в таблицах
Общие сведения
Если отчет позволяет выводить данные в удобной и понятной форме, то экранная форма предназначена в первую очередь для ввода и корректировки данных.
«Классическая» экранная форма представляет собой экран, на котором отображается одна запись таблицы или запроса. Она соответствует, например, учетной карточке или листку учета кадров, имеющимся в отделе кадров для каждого сотрудника или карточке в библиотечном каталоге, имеющейся для каждой книги. Можно даже смоделировать вид паспорта или студенческого билета. Тогда занесение и проверка сведений о сотрудниках или студентах облегчится: данные на экране и в документе будут располагаться аналогично и ввод данных будет похож на заполнение документа.
41
Достоинством СУБД Access является то, что экранные формы можно распечатать, получив набор карточек. Это позволяет работать с привычной формой представления информации.
Следует отметить, что в Access можно построить отчет, похожий на набор карточек, в котором данные расположены аналогично карточкам (автоотчет в столбец). Можно создать и экранную форму, похожую на отчет (ленточная автоформа). Но такие представления достаточно экзотичны и используются редко.
Экранная форма строится из тех же объектов, что и отчет. Разница заключается в том, что данные доступны для изменения. Можно также вводить новые записи.
Основной режим работы формы – экранный, когда на экран выводятся данные по записям.
Для навигации (движения по записям) форма имеет стандартный набор объектов: кнопки Первая запись, Последняя запись, Следующая запись, Предыдущая запись, Новая запись, Поле ввода нужно-
го номера записи.
Внимание. Поскольку порядок записей в таблице произволен, для облегчения навигации следует либо включить сортировку исходной таблицы (она задается расширенным фильтром), либо задать сортировку данных как свойство формы, либо строить форму для запроса, который сортирует данные.
В Конструкторе форм, так же как и в Конструкторе отчетов, можно вводить несколько неожиданные на первый взгляд области: Заголовок формы, Примечание формы, Колонтитулы.
Заголовок и примечание формы отображаются на экране для каждой формы. Удобно, например, видеть в примечании формы общую сумму окладов, когда происходит их изменение для некоторых работников. Необходимо помнить, что обновление данных в итоговых полях происходит не сразу, а только при переходе от одной записи к другой. Одновременно выполняется и занесение изменений в исходную таблицу.
Колонтитулы не отображаются на экране, а служат только для печати. По умолчанию печать форм происходит подряд. Может оказаться, что форма разделяется: ее начало печатается внизу одной страницы, а конец – наверху следующей. Чтобы этого не произошло, следует правильно указать место разрыва страницы в свойствах области данных формы или
установить значение Да для свойства Не разрывать.
42
Задание
Разработать форму для просмотра, коррекции и ввода сведений о новых сотрудниках. Форма должна включать фото. При распечатке на каждую запись должно отводиться по отдельному листу.
Порядок выполнения работы
1. Создание черновика формы.
На листе Формы базы данных создается форма для таблицы КАДРЫ. Запускается Мастер форм, выбираются поля таблицы, и создается форма в один столбец. Эта часть работы аналогична созданию автоотчета.
2. Работа в режиме Конструктора.
Просмотрев полученную форму, Вы увидите много недостатков. Поля расположены неудачно, их размеры не соответствуют размеру данных, область данных занимает слишком много места.
Чтобы исправить вид формы, следует открыть ее в режиме Конструктора.
Работа с формой аналогична работе с отчетом. Используются те же типы полей. Однако, поскольку поля используются не только для вывода, но и для ввода, следует учитывать некоторые особенности.
3. Особенности работы с полями в форме.
Поскольку форма предназначена для ввода данных, к ее полям иногда предъявляются требования, отличные от требований к полям отчета.
В форме часто используются Списки (ListBox) или Поля со списком (ComboBox). Это стандартные поля для Windows. Поле со списком имеет справа стрелку, направленную вниз. При нажатии на нее появляется список.
Для ввода логических значений используются Флажки (CheckBox), которые устанавливаются и сбрасываются щелчком мыши. Установите красивый вид такого поля для признака Служба в армии.
Для задания группы радиокнопок используется объект Группа переключателей. Кнопка для его создания имеет вид рамки. Когда Вы установите ее на экран, будет вызван Мастер создания группы радиокнопок. Группа радиокнопок используется аналогично списку для выбора одной альтернативы из фиксированного набора. Существуют и другие элементы управления.
4. Для облегчения навигации и управления работой можно воспользоваться кнопками управления (объект Кнопка в элементах управления). При создании кнопки в форме (этот процесс не отличается от создания других объектов) вызывается Мастер. С его помощью задаются действия, выполняемые кнопкой, и вид этой кнопки. Положительным моментом является то, что можно задать для кнопки понятный рисунок.
43

Действия, связываемые с кнопкой, выбираются из списка и не требуют дополнительного программирования. Фактически для заданного действия генерируется программа на языке Visual BASIC.
Добавить на форму кнопки управления:
-переход к следующей записи;
-переход к предыдущей записи;
-переход к первой записи;
-переход к последней записи;
-создание новой записи;
-удаление записи.
Результат работы
Форма для ввода и корректировки данных. Форма должна содержать кнопки управления.
Дополнительные задания
С использованием элемента управления Вкладка создать двухстраничную форму. На одной странице показываются общие сведения (ФИО, фотография, дата рождения), а на другой – сведения о карьере (должность и оклад).
Вкладки обычно используются для показа данных из подчиненных таблиц. Например, для работников показывается заработная плата по месяцам, для организаций-партнеров – заключенные с ними договоры, для подразделений организации – список работников. Это позволяет удобно работать со сложно организованными данными.
Изучить свойства формы и ее элементов; улучшить их внешний вид: убрать лишние области, чтобы форма имела вид карточки; настроить вид шрифта, цвета формы; обеспечить отображение одной записи одновременно.
11. Создание файла полученной заработной платы
Цель работы – подготовка к одновременной работе с несколькими таблицами
Общие сведения
Как правило, для хранения всей необходимой информации недостаточно одной таблицы. А поскольку автоматизируется хранение данных для одного предприятия, информация, хранящаяся в таблицах базы дан-
44
ных, чаще всего оказывается некоторым образом связанной между собой. В качестве начального примера такого случая рассматриваются две таблицы:
КАДРЫ, (с ней уже проводились предыдущие работы) и ЗАРПЛАТА (эту таблицу предстоит создать).
Таблица ЗАРПЛАТА предназначена для хранения информации о выданных работникам суммах заработной платы. Для ее построения рассмотрим ситуацию с выдачей зарплаты.
Каждый работник получает заработную плату ежемесячно.
Суммы зарплаты могут отличаться от оклада из-за наличия премий, надбавок ипрочихначислений, атакжеудержаний(например, штрафов).
Чтобы хранить рассчитанные суммы зарплаты, требуется создать таб-
лицу ЗАРПЛАТА с полями: ТабельныйНомер, Месяц, Сумма (пока подразумевается, что каждый год создается новая таблицы зарплаты, поэтому поле Год можно не вводить).
Возможно и введение вместо года и месяца одного поля: дата выдачи. Оба способа имеют свои достоинства и недостатки. Так, обычно в начале месяца выплачивается аванс, а в самом неделе следующего месяца – оставшаяся заработная плата за предыдущий месяц. Так что в реальных БД сведения о заработной плате более сложны.
Для получения итоговых сведений было бы удобнее включить в таблицу зарплаты поле ФИО и некоторые другие. Однако эти поля будут избыточными, так как всю информацию о сотруднике можно при необходимости извлечь из файла КАДРЫ по табельному номеру. Избыточность в базе данных приводит ко многим неприятным последствиям, одно из которых заключается в том, что при изменении сведений общего порядка о сотрудниках (к примеру, при изменении фамилии), данные требуется корректировать в нескольких местах, что чрезвычайно утомительно и часто вызывает ошибки.
Работа с несколькими таблицами накладывает на их содержимое серьезные ограничения. Так, недопустимо выписывать зарплату несуществующему сотруднику (если его табельного номера нет в таблице КАДРЫ). Недопустима также ситуация, когда одному табельному номеру соответствуют два сотрудника.
В то же время вполне допустима ситуация, когда не все работники получили зарплату в каком-либо месяце. Они могли быть больны или находиться в отпуске.
Проверки на допустимость ввода тех или иных данных Access может производить автоматически.
45
Задание
Создать таблицу ЗАРПЛАТА, заполненную данными о получаемых суммах за несколько месяцев (не менее трех).
Порядок выполнения работы
1.Окончательная проверка правильности таблицы КАДРЫ. Проверьте таблицу на отсутствие повторяющихся табельных номеров
ипустых значений;
ВКонструкторе таблиц задайте ключевое поле – поле табельного номера. Для этого выделите строку этого поля и в контекстном меню выберите опцию Ключевое поле. Слева от описания поля должно появиться изображение ключа.
Внимание. Если появляется сообщение об ошибке, еще раз проверьте значения поля табельного номера. Это поле не должно иметь пустых и повторяющихся значений.
2.Способы выполнения задания.
Для создания таблицы ЗАРПЛАТА существует два основных пути.
1.Создание структуры новой таблицы и последующее поэтапное заполнение ее данными, в основном с помощью копирования данных. Этот путь интуитивно понятен, разбит на последовательные простые шаги, но достаточно трудоемок и может привести к ошибкам.
2.Создание запроса, который все сделает автоматически. При этом потребуются некоторые усилия на создание самого запроса. Запрос должен быть тщательно проверен, так как при ошибке в запросе, связанном с изменением данных, может произойти их потеря.
При выполнении данной лабораторной работы Вам следует использовать второй способ, решающий задачу в полном объеме.
Имеется проблема создания запроса, результатом которого будет таблица (ЗАРПЛАТА), содержащая большее число записей, чем исходная
(КАДРЫ).
До сих пор изучались только запросы на выборку, обновление и удаление. Ни у одного из них результат по количеству записей не может быть больше, чем исходная таблица. Существует еще запрос на создание таблицы. Он аналогичен запросу на выборку, но записывает результат в новую таблицу. Запрос этого типа можно было бы применить, если бы требовалась зарплата только за один месяц.
Вы уже сможете создать запрос на выборку, который даст нужный результат для одного месяца. Для этого в запросе, озаглавленном
ОДИН_МЕСЯЦ, следует взять из таблицы КАДРЫ поле табельных номеров;
создать вычисляемое поле Месяц: "Январь" ;
46
создать вычисляемое поле НоваяСумма: [Оклад]*1,1, в котором в очень упрощенном виде рассчитывается сумма зарплаты с премией
10%.
Проверьте, правильно ли выполняется запрос.
Суть дальнейшей задачи заключается в том, чтобы объединить несколько таких запросов, отличающихся только названием месяца. Для этого имеется средство – запрос на объединение. К сожалению, для него нет Конструктора и запрос требуется создавать на языке SQL (Structured Query Language).
На самом деле Конструктор автоматически создает и сохраняет все созданные запросы на этом языке. При выполнении запроса выполняется команда SQL. При открытии запроса в режиме Конструктора по команде SQL формируется табличный вид запроса, который Вы уже умеете корректировать.
В Конструкторе запросов для запроса ОДИН_МЕСЯЦ следует выбрать Режим SQL. Появится строка команды SQL. Выделите весь текст команды и скопируйте его в буфер обмена.
Создайте новый запрос в режиме Конструктора. Не выбирайте для него таблиц-источников. Не заполняйте таблицу данными. В контекстном меню выберите Запрос SQL Æ Объединение. Вы получите окно с текстом команды SQL. Текст начинается со слова SELECT.
Полностью сотрите содержимое окна и замените его на текст запроса ОДИН_МЕСЯЦ из буфера обмена. Вы получили команду, которая:
начинается со слова SELECT;
имеет заключенную в кавычки константу "Январь"; оканчивается точкой с запятой. Это конец всей команды.
Запрос на объединение содержит несколько фрагментов SELECT, объединенных словом UNION. Поэтому:
вставьте текст из буфера еще один раз;
замените точку с запятой в середине команды словом UNION, отделенным пробелами от остального текста;
замените во втором фрагменте слово "Январь" на слово "Февраль". Попробуйте выполнить полученный запрос. В случае успеха добавьте
в текст команды третий фрагмент для месяца "Март".
Последним создайте запрос на создание таблицы, основанный на полученном запросе на объединение.
Выполнение последнего из созданных запросов приведет к желаемому результату.
3. Проверка правильности заполнения таблицы ЗАРПЛАТА. Последний шаг работы – проверка правильности вновь созданной
таблицы. Для этого следует задать ей ключевые поля.
47

Табельный номер не может быть первичным ключом, так как каждый сотрудник получал зарплату несколько раз. Реалистичное допущение заключается в том, что один человек не может получить несколько зарплат в одном месяце. Таким образом, в таблице не может повторяться пара ТабельныйНомер и Месяц. Они представляют собой составной первичный ключ. Для его задания выполните следующее.
Выберите таблицу ЗАРПЛАТА.
Войдите в Конструктор таблиц и выделите два поля: ТабельныйНо-
мер и Месяц.
Задайте их как ключевые.
Если все оказалось правильно, ошибка не возникнет. При наличии ошибки проверьте содержимое таблицы и повторите описанные действия с начала.
Внимание. При наличии первичного ключа будет автоматически производиться проверка вводимых данных. В ключевых полях не допускаются пустые значения. Запрещено и повторение комбинаций значений ключевых полей.
Результат работы
Полученная таблица должна содержать сведения для всех работников не менее, чем за три месяца, и иметь составной первичный ключ. Таблица КАДРЫ также должна иметь первичный ключ.
12. Просмотр сумм зарплаты
Цель работы – получение информации из двух таблиц
Общие сведения
Для того, чтобы распечатать ведомость заработной платы или просто проверить выданные суммы, пользоваться только таблицей ЗАРПЛАТА неудобно. Требуется знать, какому сотруднику соответствует каждый табельный номер. Но сведения о сотрудниках находятся в таблице КАДРЫ. К ней приходится часто обращаться для поиска нужных сведений.
Поскольку эта операция является рутинной, часто встречается в практике и требует больших затрат времени, она автоматизирована в СУБД. Более того, реализация данной задачи является одним из основных требований к реляционным СУБД, к которым относится иAccess.
Итак, требуется выводить данные из двух таблиц.
Если просто ввести в запрос две таблицы и выводить поля ФИО,
ТабНом из таблицы КАДРЫ и поле Зарплата из таблицы ЗАРПЛАТА,
48

то Вы получите огромный список, в который войдут все возможные комбинации зарплат и фамилий. Чтобы выводились только нужные фамилии, в выбираемых из двух таблиц записях должны совпадать табельные номера.
Это достигается путем установления связей между таблицами в базе данных.
Связь между таблицами БД является механизмом, позволяющим выбирать из них нужные данные.
Связь можно установить в запросе. Для этого, после того, как в качестве источника данных выбраны две или более таблиц, от поля одной таблицы к полю другой протягивается связь и устанавливаются ее свойства.
Но связи между таблицами БД отражают стабильные свойства системы таблиц, поэтому и устанавливать их следует на постоянной основе, после определения состава таблиц БД. А при создании запросов постоянные связи автоматически переносятся в них.
Набор постоянных связей БД называется СХЕМОЙ ДАННЫХ.
При построении запросов из нескольких таблиц, в них передаются связи, существовавшие на момент создания запроса. При последующем внесении изменений в схему данных связи в запросе остаются неизменными! Для их обновления требуется переделывать запросы. Поэтому схеме данных надо уделять большое внимание на ранних этапах создания БД.
Связь можно установить постоянно. Весь набор постоянных связей называется Схемой данных. Она отражает стабильные свойства системы таблиц и переносится во все запросы при их создании.
Можно также установить временную связь в отдельно взятом запросе. Но поскольку первый путь не только дает больше возможностей, но и отражает воплощение всего замысла базы данных, будет рассмотрен именно он.
Внимание. При построении запросов из нескольких таблиц, в них передаются связи, существовавшие на момент создания запроса. Это означает, что при внесении изменений в схему данных, связи в запросе остаются неизменными. Для их обновления требуется удалять из запроса все таблицы и вводить их заново.
Задание
Связать две имеющиеся таблицы и вывести сведения о зарплате всех сотрудников.
49
Порядок выполнения работы
1. На вкладке Работа с базами данных в поле Отношения нажмите кнопку Схема данных. Выберите таблицы КАДРЫ и ЗАРПЛАТА.
В выбранных таблицах ключевые поля отмечены жирным шрифтом. Протяните указатель мыши от поля ТабНом таблицы КАДРЫ в поле ТабельныйНомер таблицы ЗАРПЛАТА. Эти поля соединятся линией –
связью. Появится окно свойств этой связи.
Вокне имеются несколько флажков. Один из них – Обеспечение целостности данных. Он задает проверку при вводе новых данных. Нельзя будет ввести зарплату для несуществующего работника.
Внимание. Если установить связи между таблицами до заполнения их данными, то процесс ввода придется планировать. Если БД построена правильно, то порядок заполнения будет соответствовать реальной последовательности событий.
Внимание. Если связь не устанавливается, закройте схему данных
ипроверьте выполнение условий целостности данных, после чего повторите попытку.
Вданном случае должен установиться тип связи Один ко многим, так как в одной таблице ТабНом – ключевое поле и не может повторяться, а в другой – не ключевое (один сотрудник может получить несколько зарплат). Поле ТабельныйНомер – часть ключа в таблице ЗАРПЛАТА.
Та таблица, у которой связываемое поле является ключевым, называется главной, а другая – подчиненной.
Проверка целостности производится при вводе данных в подчиненную таблицу.
Если установить флажок Каскадное обновление связанных полей,
то при изменении табельного номера в главной таблице (например, при обновлении системы табельных номеров на предприятии) все табельные номера будут обновлены также и в подчиненной таблице.
Если же установить флажок Каскадное удаление связанных запи-
сей, то при удалении сотрудника из таблицы КАДРЫ (например при его увольнении с работы), будут удалены и все записи о его зарплате.
Внимание. Установка обеспечения целостности данных требует определенных навыков. Соблюдайте осторожность при удалении, так как в отличие от запросов, каскадные операции не предупреждают обо всех последствиях и всем масштабе удалений. А восстановить удаленные записи невозможно.
Для изменения свойств связи выделите нужную связь, щелкните по линии связи дважды или в контекстном меню выберите опцию Изменить связь.
Внимание. Ввиду «тонкости» линии связи лучше щелкать по ней левой кнопкой до тех пор, пока она не станет выделенной (при выде-
50