Разработка формы Заказы: создание поля со списком. Подчиненные формы
Разработка формы Заказы: создание поля со списком
Форма Заказы — это основная форма, через которую будет происходить диалог с пользователем. Перед конструированием формы прикинем ее желаемый вид:
Как видно, форма содержит различные типы полей. В частности, поле Клиентпредставляет собой поле со списком, т.е. клиент должен выбираться из списка клиентов. Поле «Состав заказа»представляет собой так называемую подчиненную форму, здесь перечисляются заказанные товары, должна быть возможность ввода/просмотра заказываемых товаров.
В качестве источника данных формы следует использовать таблицу Заказы. Разработку формы Заказы начнем с создания полей КодЗаказа, ДатаЗаказа, ФИОменеджера, ОбщаяСумма и надписи «Заказы». Эти действия вам знакомы из предыдущего примера: откройте форму Заказы в режиме Конструктора и выполните их самостоятельно.
Для создания поля со списком Клиент воспользуемся Мастеромсоздания элемента, который позволяет автоматизировать «настройку» элемента управления при его переносе на форму.
1. Отобразите Панель элементов, нажав кнопку на Панели инструментов,и на ней включите кнопку с всплывающей надписью Мастера. Отобразите также Список полей,нажав на соответствующую кнопку на Панели инструментов.
2. Щелкните по элементу Поле со спискомна Панели элементови сразу же щелкните по полю КодКлиента в Списке полей.Установите указатель мыши в нужное место формы (он примет форму элемента) и, удерживая левую кнопку, растяните элемент до требуемых размеров.
В этом месте будет запущен Мастерсоздания поля со списком. Он последовательно выводит несколько диалоговых окон, в которых запрашивает у вас уточняющие данные. В первом окне уточняется источник данных для поля: выберите пункт поле со списком использует значения из таблицы или запросаи нажмите кнопку Далее.В следующем окне уточняется имя таблицы или запроса: выберите таблицу Клиенты и нажмите Далее. В следующем окне уточняются поля, которые требуется выводить в списке: выберите поля КодКлиента, ФИО, Тел/факс и нажмите Далее.Следующее окно позволяет задать ширину (потянув за название поля) и видимость полей списка: задайте ширину полей (потянув за название поля) и нажмите Далее.Следующее окно уточняет, куда будет запоминаться выбираемое из списка значение: выберите опцию Сохранить вполеи поле КодКлиента инажмите Далее. Вследующем окне запрашивается надпись к полю со списком: введите Клиент и нажмите Готово.
3. Полученное поле со списком измените до нужных размеров и сохраните форму (с именем Заказы).
4. Проверьте работу полученного списка. Для этого откройте форму Заказы, а в ней щелкните по созданному списку: в нем должны быть перечислены фамилии и телефоны клиентов.
5. Подчиненные формы. Выбор базовой таблицы.
Разработка поля СоставЗаказа требует выполнения большего количества подготовительных действий и знания некоторых других возможностей Access.
Как было отмечено, элемент СоставЗаказа является не полем, а подчиненной формой, иначе — подформой. Подчиненная форма — это форма, вложенная в другую форму. Обычно подформу синхронизируют с формой по некоторому полю так, чтобы в подформе отбирались лишь записи, соответствующие текущей записи в форме. Поле для синхронизации в форме именуют основным полем, а в подформе — подчиненным полем.
В нашем примере основным полем следует выбрать поле КодЗаказа формы Заказы, а подчиненным — поле КодЗаказа подформы. Таким образом, в подформе будут отбираться строки, соответствующие текущему заказу.
Подчиненную форму с перечнем товаров для формы Заказы назовем ЗаказаноТовараПодформа. Порядок создания подформы такой же, как и для формы, поскольку подформа есть полноценная форма, но используемая в другой форме. Однако, следует особо обратить внимание на источник данных для подформы.
В качестве базовой таблицы для ЗаказаноТовараПодформа следует использовать таблицу ЗаказаноТовара, так как именно она устанавливает перечень товаров по каждому заказу. Данные же о названии и цене товара должны выбираться из другой таблицы — Товары, В итоге источником данных для нашей подчиненной формы станет следующий запрос — рис. 5.12. Обратите внимание, что поле Код Товара выбрано из таблицы Заказано Товара, а не из таблицы Товары.
Разместить этот запрос можно двумя способами.
1. Построить, как рассматривалось ранее, автономный запрос и присвоить ему имя ЗаказаноТовараЗапрос. Он будет храниться в виде отдельного объекта в закладке Запросыглавного окна Access. К нему возможно обращение по имени из различных форм.
2. Создать запрос внутри формы ЗаказаноТовараПодформа следующим образом:
- При создании формы в качестве базовой таблицы источника данных указать таблицу ЗаказаноТовара, ее имя будет записано в свойство Источник записей подформы (см. закладку Данныеокна Свойства).
- Для свойства Источник записей построить запрос, нажав накнопку ... справа от значения свойства. После внесения дополнений, закрыть окно построителя запросов и сохранить изменения. Свойство Источник записей получит значение строки запроса на языке SQL.
- Отметим, что если нажать кнопку Сохранитьна Панели инструментов,находясь в построителе запросов, то будет запрошено имя запроса, с которым он будет сохранен в виде отдельного объекта в закладке Запросы.
Теперь приступим к созданию подчиненной формы ЗаказаноТовараПодформа. Перечень действий по ее созданию следующий.
1. Создайте форму. В качестве источника данных используйте один из приведенных выше методов.
2. Сделайте форму ленточной: вызовите окно Свойства,откройте в ней закладку Макет,в свойстве Режим по умолчанию значение Простая измените на Ленточная.
3. Разместите поля и надписи и закройте форму с сохранением. Отметим, что поля КодЗаказа и КодТовара переносить на подформу необязательно, но в запрашиваемых данных они присутствуют.
4. Проверьте работу подформы. Вы увидите, что выводится перечень товаров для всех заказов, поскольку не указано поле для синхронизации — основные и подчиненные поля задаются при внедрении подформы в форму.
Внедрение подчиненной формы, синхронизация полей
Осталось внедрить созданную форму в качестве подчиненной в форму Заказы:
1. Включите Мастерна Панели элементов,выберите элемент Подчиненная форма/отчет,установите указатель мыши на форму (на область данных или примечания) и растяните его до нужных размеров.
2. В этом месте будет запущен Мастер создания подчиненной формы, который попросит уточнить некоторые данные. В первом окне уточняется источник данных для подформы: выберите пункт Формы,выберите из списка ЗаказаноТовараПодформа и нажмите кнопку Далее. Следующее окно уточняет имена основных и подчиненных полей: выберите Выбор из списка,строку «ЗаказаноТовараЗапрос для каждой записи Заказы» и нажмите Далее.В следующем окне запрашивается надпись к подчиненной форме: введите Состав заказа и нажмите Готово.
3. Подкорректируйте размеры и местоположение подформы, сохраните форму Заказы.
4. Проверьте ее работу. При просмотре формы Заказы вы должны увидеть желаемый результат в первом приближении.
Для понимания синхронизации формы и подформы посредством связи по полю рекомендуется открыть форму Заказы в режиме Конструктора и просмотреть свойства подчиненной формы. В частности, в закладке Данныесвойство Объект-источник будет содержать имя ЗаказаноТовараПодфор-ма, а свойства Подчиненные поля и Основные поля — значение КодЗаказа. Это и есть поля в форме и подформе, по которым связываются и синхронизируются данные.
(Форма, в которую внедряется подчиненная форма, не может быть ленточной).
Дата добавления: 2016-04-14; просмотров: 1107;