Страницы

вторник, 31 декабря 2013 г.

База данных "Абитуриенты" - Access 2007

Сформировать базу данных согласно постановке задачи. В качестве предметная области  рассматривается приемная комиссия в вузе.
Решаемые задачи – учет абитуриентов (личные сведения, о законченном учебном заведении, на какую специальность поступает), используется  справочник учебных заведений и справочник специальностей, т.е. предусмотреть выбор из списка.
Запросы:
  • Упорядочение по полям: ФИО абитуриента. специальность.
  • Поиск: сведения об абитуриенте по первым буквам фамилии; выпускающая кафедра и полное название специальности.
  • Выборка: абитуриенты, окончившие техникум ХХ; абитуриенты, поступающие на специальность ХХ.
  • Коррекция: удаление данных об абитуриенте ХХ; изменение номера специальности с А на Б для абитуриента Х.
  • Табличный отчет: список абитуриентов, группировка по специальностям, сортировка по алфавиту.

Выполним это задание в Microsoft Access 2007.
Сначала разберемся, какие нам нужны таблицы. Во-первых, справочник учебных заведений. Поля – код, наименование, город. Во-вторых, справочник специальностей с полями шифр, название. Список кафедр можно вносить вручную в каждую запись, можно делать выбор из списка, а можно создать отдельную таблицу с полями код и название. Если справочник в отдельной таблице, то можно добавить новые поля. Пригодится при расширении базы данных.
И еще таблица – Абитуриенты. Поля – код, ФИО, адрес, и что еще кто придумает.
Перейдем к связям. В данном случае главной таблицей будет таблица абитуриентов, а подчиненными все остальные. Примем, что абитуриент поступает на одну специальность. Хотя было бы логичней создать отдельную таблицу, куда включить код абитуриента и коды справочников. Но в этой базе не будем усложнять.
Создаем файл базы данных.
Создаем таблицы. Коды делаем числовыми или текстовыми, например, шифр специальности лучше не делать счетчиком, а сделать, допустим, числом или текстом и добавить реальные шифры специальностей (лучше делать текстом, потому что некоторые специальности начинаются с 0, а ноль впереди числа программа убирает). Справочники подключаем через столбцы подстановки.
Получается такая схема данных:


Выбираем каждую связь и настраиваем:


Флажок «Каскадное удаление» не устанавливаем, так как не нужно, чтобы удалялись все данные об абитуриенте, если удалили учебное заведение, специальность или кафедру.
Создадим формы для ввода данных. Можно использовать мастер, и сделать формы простые, например, «несколько элементов» для простых справочников, или разделенную для таблицы абитуриентов, вот, например:


Вносим нужное количество записей в базу данных.
Запрос на выборку – ФИО абитуриента и специальность, отсортированные по алфавиту. Создаем запрос в конструкторе, добавляем таблицы абитуры и специальностей, выбираем поля:


Далее можно сделать форму или отчет по этому запросу, тоже мастером. Форма:


Делаем запрос - Поиск: сведения об абитуриенте по первым буквам фамилии; выпускающая кафедра и полное название специальности.
Тут не знаю, это два запроса на поиск или все относится к поиску абитуриента. Если все-таки два, то можно сделать по примеру, который сейчас будет приведен.
Создаем запрос, как на рисунке


Вводить нужно первые буквы, используется сравнения строк Like.
Создадим форму по этому запросу. Устанавливаем курсор на имени запроса и в разделе «Создание» - «Формы» выбираем «Мастер форм»:


Затем выбираем вид формы и другие параметры, потом пишем имя и сохраняем. Корректируем, если нужно, заголовок формы, шапку таблицы и прочее.
Чтобы выполнить запрос, неудобно каждый раз открывать-закрывать форму. Добавим две кнопки. Одна будет закрывать форму (при создании кнопки нужно выбрать один из вариантов действия, предложенный мастером), вторая будет обновлять запрос, то есть просить ввести новые буквы и осуществлять новый поиск. Добавим кнопку на форму, а когда запустится мастер, нажмем «Отмена». В окне свойств кнопки (откроется, если два раза щелкнуть по ней в конструкторе) на вкладке «События» в обработке нажатия кнопки нажмем кнопочку «…»


откроется редактор Visual Basic. Далее в процедуре пишем следующий текст:


Эта процедура обновляет форму и запрос.
Сохраняем форму.


Два запроса на выборку - Выборка: абитуриенты, окончившие техникум ХХ; абитуриенты, поступающие на специальность ХХ.
Можно сделать просто запросы и в конструкторе в условии отбора указать нужное заведение или специальность. При этом всегда запрос будет показывать выборку по одному учзаведению или специальности. Можно сделать запрос с параметром, при этом пользователю нужно будет вводить первые буквы. Затем сделать форму по этому запросу. Сделаем немножко по-другому. Создадим обычный запрос на выборку по всем учебным заведениям (по специальностям можно сделать по аналогу). 


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


Выбираем поля в поле со списком:


Ключевой столбец скрываем. Пишем нужную подпись. Результат:


Выборку по специальности не привожу здесь. Все точно так же.
Запрос на удаление:
Создаем запрос, добавляем таблицу абитуриентов, выбираем поле «ФИО», в условии отбора пишем фамилию абитуриента, предназначенного к выпиливанию из базы (или пишем параметр и функцию Like, чтобы пользователь сам вводил, что ему нужно). Пример:


Вверху выбираем тип запроса – «Удаление». Сохраняем, запускаем, соглашаемся на запрос. Вася Петров удален.
Запрос на коррекцию. Создаем запрос, добавляем таблиц абитуриентов, добавляем поля «ФИО» и «Специальность». В условии отбора пишем нужную ФИО. Меняем тип запроса на обновление. В поле обновления пишем нужное значение. Запускаем, соглашаемся, Вася (которого я все-таки не удалил, пожалел своего времени на новый ввод Васи Петрова в базу) переведен на новую специальность.


Делаем отчет - печать списка абитуриентов с группировкой по специальностям. Сначала создадим многотабличный запрос:


На основе этого запроса делаем отчет – запускаем мастер отчетов, добавляем все поля, выбираем представление:


Далее, кому как нравится. Редактируем в конструкторе, что необходимо


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


Остальные кнопочки сами-сами…