Помощь Выход

Глава 4. Создание простых форм

Таблицы позволяют просматривать и изменять данные, но работать с ними не всегда удобно, а представление данных не очень наглядно. Кроме того, непосредственный доступ к таблицам не позволит защитить данные от несанкционированного изменения. Работу с данными более удобно и безопасно выполнять при помощи форм. Формы представляют собой окна приложения и обеспечивают интерфейс конечного пользователя. Они позволяют:


• Управлять представлением данных на экране, включая сортировку и фильтрацию, и менять его по мере необходимости.
• Упростить ввод и редактирование информации посредством таких элементов управления, как списки, поля со списками и флажки.
• Вводить и выводить графическую информацию из базы данных посредством использования объектов OLE.
• Выполнять вычисления над данными таблиц или запросов с помощью вычисляемых полей.
• Выполнять разнообразное редактирование данных с помощью макросов и событийных процедур, которые запускаются в ответ на определенные события, например, нажатие кнопки мыши или клавиши на клавиатуре.
• Осуществлять защиту информации от непреднамеренного изменения, удаления и ввода неправильных данных посредством блокировки, вывода на экран и запрещения доступа, а также использования масок ввода.
• Упростить работу с информацией в нескольких связанных таблицах посредством использования подчиненных форм.
• Завершить создание приложения для работы с базой данных разработкой главной кнопочной формы, из которой можно осуществлять печать отчетов, выполнять макросы и запросы, а также открывать все остальные формы базы данных.

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

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

Два основных режима, в которых может находиться форма, это режим формы и режим конструктора. В режиме конструктора форма проектируется или редактируется. Можно создавать форму сразу непосредственно в конструкторе или редактировать ее после работы программ-мастеров. Практика показывает, что при помощи мастера нельзя создать форму, которая бы вполне Вас устраивала. Это в первую очередь связано с размерами и размещением элементов управления, а также надписями, форматами отображения данных и масками ввода. Для редактирования существующей формы нужно выбрать ее в окне базы данных на вкладке Формы и нажать кнопку Конструктор.

Режим формы является рабочим режимом, т.е. в этом состоянии мы работаем с данными из таблиц, которые выводятся посредством элементов управления, размещаемых на форме в процессе конструирования. Примерами элементов управления являются: поле, список, поле со списком, флажок.

Чтобы создать форму, нужно в окне базы данных на вкладке Формы нажать кнопку Создать. При этом на экране появится окно. В этом окне нужно выбрать источник данных и средство построения формы: конструктор или один из мастеров, после чего нажать кнопку ОК.

Сначала создадим форму для работы с данными из таблицы Сотрудник. Для этого воспользуемся автоформой (Автоформа: в столбец), поскольку нам нужны все поля таблицы Сотрудник, которая и выбирается в качестве источника данных. Напомним, что код сотрудника – это числовое поле (ключевое), а не счетчик; поэтому нам понадобится на форме и это поле для ввода в него информации при добавлении нового сотрудника в базу данных или редактирования существующего значения. Нет особой необходимости выводить на форму поля с типом данных счетчик, т.к. нельзя изменить его значение.

Для поля таблицы с типом поле объекта OLE (мы используем это поле для хранения фотографии сотрудника) мастер создает на форме элемент управления присоединенная рамка объекта, в который графические изображения вставляются в режиме формы командой Вставка\Объект....

После построения формы с помощью мастера возможно придется откорректировать ее в режиме конструктора (надписи, размеры полей, маска ввода для даты рождения).

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

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

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

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

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

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

В случае отсутствия на экране описанных выше окон нужно в меню Вид выбрать соответствующую команду. Например, чтобы вызвать окно свойств, выполните команду Вид\Свойства. Кроме того, можно воспользоваться панелью инструментов Access, которая называется Конструктор форм.

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

На следующих шагах работы с мастером (для перехода к следующему шагу нужно нажать кнопку Далее, а в конце диалога - кнопку Готово) требуется выбрать надпись или рисунок на кнопке Выход и имя элемента управления, которое будет использоваться при ссылках на него в кодах программы. Если ссылки на данную кнопку не предполагаются, можно оставить имя, предлагаемое по умолчанию (например, Кнопка1).


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

Для отображения на форме категории товара разместим на ней элемент поле, данными для которого будет служить поле Наименование_кат таблицы Категория товара. Напомним, что таблица Категория товара должна быть выбрана в качестве источника данных разрабатываемой формы. В результате созданная форма в режиме Форма может выглядеть следующим образом

На форму по умолчанию добавляется навигатор перехода по записям, располагаемый внизу формы. Кнопки имеют обычный для интерфейса Windows смысл (слева направо): переход к первой, предыдущей, следующей, последней записи. Последняя кнопка навигатора служит для добавления новой записи. Напомним, что при переходе к любой другой записи текущая запись автоматически сохраняется, если она была изменена. Обратите внимание на номер записи между кнопками навигатора. Это поле несет функциональную нагрузку: если ввести в него номер требуемой записи и нажать клавишу ENTER на клавиатуре, будет выполнен переход к записи с данным номером.

Работать с формами удобно при помощи мыши. Однако, если воспользоваться клавиатурой, то результат может оказаться неожиданным для пользователя, незнакомого с MS Access. Итак, какие действия произойдут, если нажать такую знакомую клавишу ENTER? Во-первых, это зависит от того, какой элемент управления на форме имеет фокус в данный момент времени. Дело в том, что многие элементы управления реагируют на событие Нажатие клавиши. Поэтому, если имеется процедура, обрабатывающая это событие, то она будет выполнена. Например, если кнопка Выход имеет фокус, и в этот момент нажать клавишу ENTER, то форма будет закрыта. Во-вторых, элементы управления могут иметь свойство Поведение по Enter, которое может иметь значение «По умолчанию» или, например, «Перевод строки».

Это свойство определяет те действия, которые будут выполнены (возможно, после обработки события) при нажатии клавиши ENTER. Значение «По умолчанию» означает, что будут выполнены те действия, которые указаны в параметрах среды MS Access. Изменить эти параметры можно на вкладке Клавиатура в окне Параметры, если выполнить команду Сервис\Параметры. Для клавиши ENTER имеются следующие варианты действий: нет, следующее поле, следующая запись. Заметим, что этими параметрами можно управлять программным образом.


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