Одним из вариантов создания такой формы может быть выполнение действий в следующей последовательности. Напомним, на рисунках показаны панели инструментов Access 2007. Вначале создается макет пустой формы. Для этого в закладке «Создание» следует нажать кнопку «Конструктор форм». Появившуюся пустую форму необходимо настроить следующим образом. Добавить заголовок и примечание формы, нажав кнопку «Заголовок» в закладке «Конструктор», в свойствах формы установить следующую позицию макета: Режим по умолчанию в «Ленточные формы», Полученная форма и её свойства представлены на последующих двух рисунках.
Теперь в форму можно добавить заголовок и поле со списком товаров. Создание поля со списком описано в разделе Создание подчиненной формы «Спецификация». В результате должна получиться заготовка проектируемой формы следующего вида.
Сохраните эту форму задав ей имя, например, «Товары в заказах». Затем откройте её снова в режиме конструктора.
Как отмечалось, содержимое формы базируется на данных таблиц базы или запросов. Данные в проектируемую форму поставляются запросом, который сформулирован в начале раздела и описан в разделе Создание третьего запроса. Но теперь запрос нужно создать как источник данных для формы. Для этого нужно в свойствах на уровне формы выбрать вкладку «Данные» и в позиции «Источник записей» нажать кнопку построителя запросов (). В отличие от ранее описанного запроса в условии отбора нужно сослаться на поле со списком. В примере это ПолеСоСписком0. При создании условия отбора необходимо учесть, что поле со списком возвращает не наименование, а код товара. Поэтому условие отбора надо ставить в поле «Код_товара» запроса. Ссылка в условии отбора по коду товара создаётся следующим образом. Курсор устанавливается в позицию «Условие отбора» для поля «Код_товара» и нажимается кнопка «Построитель» конструктора. После появление окна построителя выражений, надо установить ссылку на ПолеСоСписком0 формы как показано на рисунке.
После нажатия кнопки «ОК» ссылка на поле будет перенесена в запрос, и конечный вид запроса будет выглядеть следующим образом.
Теперь нужно закрыть запрос и согласиться на сохранение изменений в появившемся окне.
Далее в форму нужно перенести поля формируемые запросом. Для этого в панели инструментов конструктора нужно нажать кнопку «Добавить поля» и из появившегося списка полей в раздел формы «Область данных» перетащить требуемые в запросе поля. В результате форма в режиме конструктора примет следующий вид.
В заголовок формы добавлены надписи столбцов, кроме того из запроса перенесены данные об организации, номере заказа и количестве товара. Остальные поля в форму не включены так как код товара пользователю не нужен, а наименование иже есть в поле со списком. Запустив просмотр формы можно обнаружить следующие неприятности. При выборе в поле со списком товара данные запроса в форме не появляются. Кроме того, поскольку форма ленточная, последняя строка открыта для ввода данных, что вызывает попытки у неопытных пользователей добавить строки в результаты запроса. Первый из недостатков устраняется путем добавления в событие «После обновления» поля со списком (ПолеСоСписком0) кода вызывающего обновления данных:
DoCmd.Requery
Вместе с заголовком процедуры обработки события фрагмент кода дожжен выглядеть так:
Private Sub ПолеСоСписком0_AfterUpdate()
DoCmd.Requery
End Sub
Второй недостаток ликвидируется установкой свойства «Разрешить добавления» в закладке «Данные» свойств формы в состояние «Нет».
Итоговый вид получившейся формы выглядит так.