Создание сложных форм
Сложные формы создаются для работы сразу с несколькими таблицами и помимо кнопок управления могут содержать поля различного назначения, раскрывающиеся списки, флажки, формулы т.д. Такие формы позволяют создать удобную информационную среду для работы со сложными базами данных, организовав диалог только с теми полями таблиц, которые нужны пользователю для выполнения конкретной работы. С их помощью можно разграничить доступ пользователей к соответствующим разделам базы данных.
Сложные формы являются удобным механизмом для работы с подчиненными таблицами. Для создаваемой базы данных Фирма такой подчиненной таблицей является таблица Заказы. Непосредственное заполнение этой таблицы требует, чтобы пользователь помнил номера всех клиентов, коды всех услуг и номера всех исполнителей. Это очень неудобно, так как человек привык работать с фамилиями (а не номерами) и наименованием услуг (а не их кодами). Создание сложных форм позволяет решить эту проблему.
Обычно сложные формы сначала создаются с помощью Мастера создания форм, а затем дорабатываются с помощью Конструктора.
Задание 177. Создайте с помощью Мастера форму для таблицы Заказы, выполнив следующие операции:
На вкладке Создание в группе Формы раскройте список Другие формы и выберите пункт Мастер форм.
В окне мастера Создание форм с помощью списка Таблицы и запросы выберите таблицы Заказы. Из списка Допустимые поля переместите в список Выбранные поля только следующие поля: НомерЗаказа, ДатаПриема, ДатаИсполнения. В последнем диалоговом окне установите переключатель «Изменить макет формы» (это приведет к переключению в режим Конструктора) и щелкните кнопку Готово.
В окне конструктора расширьте форму так, чтобы в ней можно было разместить новые элементы (переместите поле Примечание формы вниз с помощью мыши).
Измените надписи перед полями «НомерЗаказа», «ДатаПриема» и «ДатаИсполнения», установив курсор в надпись двойным щелчком и введя с клавиатуры строки «Номер заказа», «Дата приема» и «Дата исполнения» соответственно. Такое оформление полей больше соответствует стандартному. Обратите внимание на то, что изменять следует текст только в левых прямоугольниках (надписях к полю). Значение самих полей изменять не надо!
Дата приема заказа обычно совпадает с текущей датой. Поэтому можно установить для этого поля значение по умолчанию – текущую дату и запретить ее «ручной» ввод с клавиатуры. Для этого:
щелкните по полю ДатаПриема правой кнопкой мыши и в открывшемся контекстном меню выберите строку Свойства;
в открывшемся диалоговом окне на вкладке Данные выберите строку Значение по умолчанию и щелчком по кнопке … вызовите Построитель выражений;
в окне программы-построителя раскройте щелчком по значку + папку Функции и двойным щелчком вложенную в нее папку Встроенные функции;
в списке категорий встроенных функций выберите категорию Дата/время и в перечне функций этой категории – функцию Date, задающую текущую системную дату, установленную в компьютере;
вставьте эту функцию щелчком по кнопке Вставить в выражение, вычисляющее значение по умолчанию;
закройте построитель выражений, нажав кнопку ОК;
в диалоговом окне свойств поля установите, что к полю нет доступа, и есть блокировка;
При приеме заказов пользователю удобнее иметь дела с наименованием услуги, а не ее кодом. Пользователь записывает наименование услуги, а ее код компьютер формирует сам. Для включения в форму данные об услуге можно воспользоваться раскрывающимся списком предоставляемых услуг. Вставьте раскрывающийся список в форму, выполнив следующие операции:
Выберите на панели элементов управления элемент Поле со списком. Поместите поле на форме с помощью мыши.
В открывшемся диалоговом окне установите переключатель Объект «поле со списком» будет использовать значения из таблицы или запроса и щелкните кнопку Далее.
В следующем диалоговом окне установите в группе Показать переключатель Таблицы и выберите в открытом списке таблиц таблицу Услуги. Щелкните кнопку Далее.
Выберите в очередном окне поля КодУслуги и Наименование таблицы Услуги для включения в форму и щелкните кнопку Далее.
В следующем окне установите флажок Скрыть ключевой столбец и щелкните кнопку Далее для перехода к очередному окну Мастера.
Установите переключатель Сохранить в поле и выберите из списка поле КодУслуги таблицы Заказы. Щелчком по кнопке Далее перейдите в следующее окно.
Задайте имя Услуга и щелкните кнопку Готово.
Пользователю будет удобнее работать, если наряду с раскрывающимся списком услуг в форму вставить поле Стоимость. Для включения поля Стоимость в форму заказа выполните следующие операции:
Среди элементов управления на вкладке Конструктор выберите элемент Поле и введите поле в форму.
Щелкните по полю правой кнопкой мыши и в открывшемся контекстном меню выберите строку Свойства;
В диалоговом окне команды на вкладке Данные выберите строку Данные и щелчком по кнопке … вызовите Построитель выражений (рис. 21).
Запишите (или скопируйте)1 формулу для определения стоимости (выбора из таблицы Услуги стоимости по коду услуги). Для этого нужно ввести выражение, содержащее, например, следующую функцию:
=DLookUp("[Стоимость]";"Услуги";"[Услуги]![КодУслуги] = " & [Forms]![Данные о клиентах]![Заказы]![КодУслуги])
(стоимость выбирается из поля Стоимость таблицы Услуги, причем выбирается стоимость той услуги, код которой будет зафиксирован при оформлении заказа клиентом). Для записи этой формулы использованы конструкции языка программирования Visual Basic for Applications (VBA). С этим языком можно познакомиться на специальных факультативных занятиях.
Установите блокировку и отсутствие доступа в свойствах поля (стоимость нельзя менять при оформлении заказа).
С левой стороны от поля в надпись вставьте слово Стоимость
Разместите на форме поле со списком для выбора исполнителя заказа, выполнив операции:
Выберите на панели элементов управления элемент Поле со списком. Поместите поле на форме с помощью мыши.
В открывшемся диалоговом окне установите переключатель Объект «поле со списком» будет использовать значения из таблицы или запроса и щелкните кнопку Далее.
В следующем диалоговом окне установите в группе Показать переключатель Таблицы и выберите в открытом списке таблиц таблицу Исполнители. Щелкните кнопку Далее.
Выберите в очередном окне поля НомерИсполнителя и ФИО таблицы Исполнители для включения в форму и щелкните кнопку Далее.
В следующем окне установите флажок Скрыть ключевой столбец и щелкните кнопку Далее для перехода к очередному окну Мастера.
Установите переключатель Сохранить в поле и выберите из списка поле НомерИсполнителя. Щелчком по кнопке Далее перейдите в следующее окно.
Задайте имя Исполнитель и щелкните кнопку Готово.
Рисунок 21. Форма Заказы в режиме конструктора
Для отображения информации о том, оплачен ли заказ, на форме следует разместить Флажок. Для размещения флажка выполните следующие операции:
Выбрать элемент управления Флажок среди элементов управления и с помощью мыши разместить его на форме.
Щелчком мыши установить текстовый курсор в поле надписи флажка и ввести надпись Оплачено.
Щелчком правой кнопки мыши по флажку вызвать контекстное меню и выбрать в нем команду Свойства. На вкладке Данные диалогового окна свойств флажка выбрать строку Данные и в списке выбрать поле Оплачено (таким образом значение флажка связывается в полем таблицы Заказы). После ввода этой информации диалоговое окно нужно закрыть.
Закройте Конструктор и подтвердите сохранение внесенных в форму изменений.
Откройте форму Заказы для просмотра (рис. 22).
Рисунок 22. Форма Заказы в режиме просмотра
Примечание: Если вывести разрабатываемую форму Заказы на экран в режиме просмотра, то в поле Стоимость будет показана ошибка до тех пор, пока эта форма не будет вставлена в более сложную форму, обеспечивающую связь между таблицами базы данных.
Для отображения полной информации о заказчике и всех его заказах нужно создать сложную реляционную форму, связывающую информацию из нескольких таблиц.
Задание 188. Создать реляционную форму путем внедрения формы Заказы в форму Данные о клиентах. Для этого:
Выделите форму Данные о клиентах и откройте ее в режиме Конструктор;
Перетяните значок формы Заказы из левой боковой панели в нижнюю часть формы Данные о клиентах (копия формы Клиенты) на свободное место;
Отформатируйте элементы формы так, чтобы все они размещались на ней, и закройте конструктор.
Полученная форма должна иметь вид, показанный на рис. 23.
Рисунок 23. Форма Данные о клиентах. используемая для приема заказов
Задание 199. Введите с помощью формы Данные о клиентах информацию о заказчиках и «оформите» заказы для них, используя произвольные данные.
Таким образом, формы позволяют последовательно просматривать записи БД, искать нужные записи, удалять записи при необходимости. Для отбора информации по более сложным критериям, анализа и подведения итогов в БД создаются запросы и отчеты.
Вопросы для самоконтроля:
Как в форму вставить текущую дату или формулу?
Как вставить в форму раскрывающийся список и флажок?
3. Как создать реляционную форму из нескольких форм?
- Часть 5
- Проектирование реляционной базы данных
- Создание структуры базы данных с помощью субд
- Создание новой базы данных
- Создание новых таблиц в базе данных
- . Установка связей между таблицами и ввод данных в таблицы
- Установка связей между таблицами
- Ввод данных в таблицы бд
- Создание форм
- Создание форм с помощью мастера
- Создание форм вручную
- Создание сложных форм для работы с базой данных
- Создание форм, содержащих элементы управления
- Работа с данными с помощью формы
- Создание сложных форм
- Работа с запросами и отчетами
- Создание и фильтрация запросов
- Создание и просмотр отчетов