Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛабРаб3.doc
Скачиваний:
4
Добавлен:
21.09.2019
Размер:
89.09 Кб
Скачать

Лабораторная работа 3: Создание и использование форм

Основные сведения

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

Формы ввода данных помогают быстро, легко и без ошибок поместить информацию в таблицу БД. Использование форм ввода данных - самый распространенный способ внесения данных в таблицу БД, так как формы можно сделать похожими на обычные бумажные документы, что делает ввод интуитивно понятным.

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

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

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

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

Разработка формы Прием товаров

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

  • элемент управления Поле со списком для ввода информации о поставщике, сотруднике и категории товара. Это позволит избежать ошибок при вводе с клавиатуры и ускорить ввод информации;

  • маски ввода дат. Маска гарантирует правильность ввода и дает возможность не вводить разделители между днями, месяцами и годами;

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

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

Свойство Тип источника строк указывает на тип источника строк. Из возможных значений в списке следует выбрать Таблица/запрос.

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

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

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

Свойство Ширина столбцов задает ширину каждого столбца. Значения в этом поле отделяются друг от друга точкой с запятой. Поскольку при выборе элемента из списка требуется только имя поставщика (Название), то поле ПоставщикID делается невидимым, то есть ему присваивается нулевое значение. В результате поставщик выбирается по имени, а в таблицу Товары заносится его код, хотя этот столбец и не выводится на экран. Таким образом, строка Ширина столбцов должна иметь вид 0; 10.

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

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

Примечание. В настоящий момент форма должна иметь примерно такой вид (без кнопок и вычисляемых полей):

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

Теперь рассмотрим процесс создания событийной процедуры без использования мастера на примере создания кнопки Вставить текущую дату, которая будет обеспечивать вставку текущей даты в поле даты поступления. Перед созданием кнопки следует отключить кнопку Мастера на панели элементов. Выделим созданную кнопку, и в окне свойств сначала перейдем на карточку Все и в поле Имя введем ДатаПриема, а в поле ПодписьВставить текущую дату. Затем на карточке События находим нужное событие – Нажатие кнопки. Это событие наступает, когда производится щелчок мышью по элементу управления Кнопка. Процедура обработки событий выполняется кодом VBA. Чтобы попасть в редактор VBA, нужно нажать расположенную справа кнопку . В появившемся диалоговом окне Построитель нужно выбрать строку Программы и нажать OK.

Окно редактора кодов содержит заголовок и окончание событийной процедуры. Операторы, описывающие действия, которые должны выполняться в ответ на нажатие кнопки, записываются между этими двумя строками. Заголовок процедуры, помимо служебных слов Private Sub включает имя процедуры, которое формируется автоматически. Первая часть этого имени до символа "_" является именем элемента управления на форме, а вторая – название события. Так Click означает щелчок.

Для событийной процедуры нажатия кнопки нужно написать один оператор – оператор присваивания, который выглядит следующим образом:

ДатаПоступл=Date

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

Эта событийная процедура может изменить на системную любую, введенную ранее в поле, дату приема при случайном нажатии на кнопку. Поэтому будем вводить в поле даты приема системную дату только в том случае, если мы добавляем новую запись, т.е. тогда, когда это поле пусто. В языке VBA есть встроенная функция IsNull, которая возвращает значение Истина (True), если ее аргумент содержит пустое значение (Null). Поэтому мы сначала проверяем, заполнено ли поле даты приема на форме и, в случае, если нет, заносим в него системную дату. В результате событийная процедура примет вид:

Private Sub ДатаПриема_Click()