РГГУ – СоцФ – PR, Маркетинг
ИНФОРМАТИКА – преп. Малкова А.С.
Задания/Access-формы
Это старая версия Задания/Access-формы за 2009-04-28 19:23:56..

Формы и макросы


Пожалуйста, скачайте ЗДЕСЬ базу с таблицами, которые нам понадобятся для создания форм.


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


Осталось «преподнести товар лицом», т.е. облечь БД в формы.
Вот так:



Но формы нужны не только для красоты, на них возложено много ответственных задач:

1. Юзкейсы

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

  • оператор на регистрации вносит в БД данные о владельцах и их собаках;
  • организаторы просматривают список всех участников;
  • судьи выставляют оценки;
  • ведущий вручает премии победителям.

Каждая такая ситуация использования БД разными группами пользователей на языке разработчиков называется юзкейсом (от англ. use case – «случай использования»). Для каждого юзкейса требуется специальная форма со своим набором данных, с определенной функциональностью.

2. Интерактивность

Чтобы пользователю было удобно работать с БД, разработчики размещают на формах разные элементы управления: кнопки, вкладки, рисунки, списки. Нажимая на такие кнопки, вводя данные, выбирая значения из списка, пользователь (сам о том не ведая!) запускает маленькие программки, которые называются макросы. Макросы открывают новое окно, находят нужную запись, сортируют записи, выводят данные на печать и др.
Более сложные операции по преобразованию данных, нестандартной интерактивности записываются на языке программирования Visual Basic for Applications (VBA) в специальном редакторе. Но для того, чтобы писать такие программы, надо уже быть специалистом в программировании.

3. Защита данных

Одной из важных функций форм является защита данных! Благодаря формам, обычный пользователь БД не имеет прямого доступа к таблицам и запросам. Таблицы и запросы относятся к закрытой, хорошо охраняемой части БД, т.к. неумелый или злонамеренный пользователь может вывести из строя всю систему, просто поменяв названия таблиц или полей или удалив часть записей.
Для работы с БД напрямую нужны профессиональная квалификация и знание схемы данных, а также (что немаловажно!) права доступа. Даже отдельные формы или фрагменты форм могут быть защищены паролями. Например, форма, в которой судьи выставляют оценки собакам (чтобы никто другой не мог поменять оценки).


Создание форм


При создании формы важно помнить вот о чем:

В основе любой формы с данными лежит таблица или запрос.


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



2. Если в форму должны быть подставлены данные из разных таблиц, то сначала нужно сделать запрос, который будет собирать все данные, а потом связать с ним форму.



Перейдем от слов к делу!
Формы – это единственный элемент БД, который рекомендуется создавать с помощью мастера.


Задание 1 Создадим с помощью мастера форму fmDogInfo, в которой будет выводиться подробная информация о собаке (с фотографией).

  • В качестве источника данных в мастере укажите таблицу tbDog.
  • Вид формы «в один столбец», в некоторых версиях Access она еще называется «одинарная» (не ленточная, не табличная).
  • Название fmDogInfo.

Наша форма связана с таблицей tbDog, и в полях, расположенных на макете формы, отображается информация из полей таблицы.



Редактирование форм в режиме конструктора


После того, как вы создали форму, она открывается в режиме конструктора и выглядит вот так:



На макете формы вы можете менять РАСПОЛОЖЕНИЕ и РАЗМЕРЫ элементов управления.



Диалоговое окно Свойства позволяет настраивать самые разные характеристики элемента управления, выделенного на макете.

.


На панели элементов выбирайте НОВЫЕ элементы управления, чтобы добавить их на форму.


В списке полей отображаются ПОЛЯ таблицы или запроса, выбранного в качестве ИСТОЧНИКА ДАННЫХ формы. Их можно перетаскивать на форму, и тогда на ней будут появляться соответствующие элементы управления.


Замечание: Если вы перешли в режим конструктора, а какое-то из окон НЕ ВИДНО на экране, просто щелкните на кнопочки на панели инструментов (указанные в подписях к окнам). Они откроют соответствующие окна.


Потренируемся работать в конструкторе!


Задание 2 Приведите в порядок внешний вид формы.

  • Увеличьте размер шрифта полей с данными и подписей.
  • Сделайте подписи по-русски.

(Размер шрифта настраивается в списке параметров на вкладке Макет диалогового окна Свойства, а подписи можно поменять прямо на макете формы.)


Настройка данных формы


Чтобы лучше разобраться, как настраивать данные формы, переделаем форму fmDogInfo в форму fmPerson в режиме конструктора.


Пожалуйста, сделайте копию формы fmDogInfo (с помощью клавиш Ctrl+C и Ctrl+V) в главном окне базы данных, чтобы сделанная форма с собаками не пропала.



Задание 3 Переделайте форму копия fmDogInfo в fmPerson в режиме конструктора. Нам для этого потребуется вторая вкладка диалогового окна «Свойства», которая называется «Данные».

  • Первое, что нужно сделать, это сменить источник данных всей формы (раньше это была таблица tbDog, а теперь будет tbPerson). Для этого выделите всю форму (кликните на квадратик в верхнем левом углу макета формы)[а] и на вкладке «Данные» окна «Свойства» установите в качестве источника записей таблицу tbPerson.


  • Следующий шаг – расставить на форме поля с данными владельцев: фамилией, именем, отчеством, телефоном и адресом электронной почты. Это можно сделать двумя способами (испытайте каждый их них):
    1. Либо удалить все старые поля, относящиеся к собакам, и расставить новые поля, перетащив их на макет формы из Списка полей [4]. Как вы помните, там отображаются поля той таблицы (или запроса), которую мы назначили источником данных формы.
    2. Либо заменить источники данных у существующих полей. Каждое поле на макете формы связано с полем таблицы-источника данных формы. Наверное, вы заметили, что после смены источника данных формы на tbPerson в полях на форме появились странные надписи #Имя?


Это происходит потому, компьютер пытается (но не может!) найти в новой таблице поля, относящиеся к собакам: кличку, породу, дату рождения и др. Выделите каждый из элементов управления и вкладке «Данные» окна «Свойства» установите в качестве источника записей одно из полей таблицы tbPerson.


Добавление интерактивных элементов. Макросы. События


Мы хотим, чтобы форма не только отображала данные из таблиц, но и была «интерактивна», т.е. на ней были бы разные кнопочки, на которые можно нажимать. Здесь нам как раз и пригодятся макросы!


Задание 4 Сделаем кнопки для перехода на следующую и предыдущую запись.

  • шаг 1 ставим кнопку
    Добавляем на форму fmPerson кнопку с панели элементов (проверьте, чтобы мастер был ОТКЛЮЧЕН т.е. кнопочка с волшебной палочкой НЕ горела).

  • шаг 2 пишем макрос
    Заходим в главном окне базы данных в раздел Мкросы и создаем новый макрос mcGotoRecord в режиме конструктора. В конструкторе макроса мы описываем последовательность команд, которые компьютер должен будет выполнить. Вверху записываются команды, а внизу – дополнительные параметры каждой команды. Для перехода на следующую запись выберем команду «На запись» с параметром «Следующая».
  • шаг 3 связываем нажатие кнопки и макрос
    Осталось сообщить компьютеру, что именно этот макрос нужно выполнить, после нажатия на данную кнопку. Выделяем на макете формы кнопку и переходим на вкладку «События» окна «Свойства». На этой вкладке перечислены все-все действия, которые пользователь может осуществить с данным элементом управления: кликнуть, дважды кликнуть, просто навести мышку, не нажимая на ее клавиши, одновременно набрать текст с клавиатуры и др. Каждое такое действие называется событием. С каждым событием можно связать выполнение определенного макроса. Его имя записывается в пустую ячейку напротив соответствующего события.

Проверьте! Теперь ваша кнопка должна работать!


Задание 4а (самостоятельное) Сделайте кнопку для перехода на предыдущую запись.
Для этого надо будет написать еще один похожий макрос. Но если два макроса очень похожи по функциональности, то рекомендуется объединять их в один. Для этого кликните правой кнопкой мыши на заголовок редактора макросов и подключите там раздел Имя. Все макрокоманды ниже слова Next будут относиться к первому макросу, ниже слова Prev – ко второму.



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



Мастер событий. VBA


При создании кнопки переходов по записям я просила вас отключить мастер. Теперь пришло время узнать, что такое мастер, и как он работает. Давайте создадим еще одну кнопку для перехода по записям, но уже с помощью мастера, и посмотрим, в чем отличие!


Задание 5 Подключите мастер и сделайте кнопку для перехода на следующую запись.


Проверьте: при нажатии на кнопку форма действительно переходит на следующую запись. Мастер написал за нас соответствующие команды. Но где же они записаны?! Выделим кнопку и откроем вкладку «События» окна «Свойства». Напротив события Нажатие кнопки стоит надпись Процедура обработки событий. Кликнув на кнопочку с многоточием [...], мы попадаем в редактор языка программирования Visual Basic for Applications (VBA). Вот так выглядят те же самые команды для перехода на следующую запись, написанные на VBA.



Что лучше: писать макросы или пользоваться мастером?
С точки зрения конечного результата оба способа равнозначны. С помощью мастера получается чуть быстрее: не нужно тратить время на шаги 2 (написание макроса) и 3 (связывание события кнопки с выполнением макроса). Однако, выбор действий, которые может выполнить мастер, существенно уступает возможностям редактора макросов. Поэтому для создания действительно удобной и интерактивной БД, важно уметь самостоятельно писать макрокоманды.


А вот совсем настоящие профессионалы не будут пользоваться ни тем, ни другим. Они будут писать программы прямо на VBA!


Многооконный интерфейс


Интерфейс базы данных состоит из множества окон. Каждое окно связано с одной формой или одним запросом. Но все же в итоге мы должны связать все это большое количество окошек воедино, чтобы получился законченный программный продукт, которым удобно пользоваться. Обычно он представляет собой одно главное окно, из которого мы можем получить доступ ко всем остальным. Существует два основных способа связи форм между собой:
1. вложенные формы;
2. формы, открывающиеся в новом окне по нажатию кнопки.


Сделаем вот такую базу данных:
Внутри формы с владельцами fmPerson расположена форма со списком принадлежащих им собак fmDogList. При нажатию на кнопочку [...] открывается дополнительное окно с подробными сведениями о собаке и ее фотографией.



Задание 6 Создайте ленточную форму fmDogList со списком собак (на рисунке хорошо видно, чем ленточная форма отличается от одиночной).


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


Задание 6б Расположите напротив каждой записи в форме fmDogList кнопочку [...], по нажатию на которую будет открываться форма fmDogInfo с подробными сведениями о собаке и ее фотографией.
Инструкция – в разделе Открытие связанной формы в новом окне.


Организация поиска по БД


Одно из важных назначений БД – это поиск по большим массивам данных. Разместим на форме с владельцами поле для поиска владельца по первым буквам его фамилии. Вот так:



Задание 7 Разместите на форме поле поиска.
Инструкция – в разделе Поиск записи по образцу.


Кульминация

Мы подошли к концу занятий по базам данных!
Вернемся к базе данных из самого первого урока. Теперь вам все должно быть понятно. И вы сами сможете сделать то же!


Кликните на изображение, чтобы посмотреть ВИДЕО о работе базы данных.



Задание 8 Сколько форм и интерактивных элементов вы насчитаете в БД «Выставка собак»? Заполните таблички:


Форма Функциональность
главная в ней расположены все остальные формы
и кнопки для перехода по подчиненным формам.
... ...

Элемент управления Макрокоманды
кнопки Регистрация,
Турнирная таблица,
Итоги и др.
скрывают все подчиненные формы кроме одной,
соответствующей названию каждой из кнопок.
... ...

ВСЁ


Разработка сайта: QuickStart Group, 2008