Формы
Скачать 2.21 Mb.
|
Многотабличные формыМноготабличная форма создается для работы с данными нескольких взаимо- связанных таблиц. Источником данных такой формы является многотабличный запрос. При этом форма также может быть простой, отображающей одну запись в столбик, или ленточной, отображающей все записи в табличном виде с надписями в заголовке формы. Для создания такой формы может быть использована команда Форма (Form) или Несколько элементов (Multiple Items). Форма, построенная на многотабличном запросе, может быть названа одиночной. Многотабличная форма может быть составной: состоять из главной формы и одной или нескольких подчиненных включаемых форм. Подчиненная форма, как правило, строится на основе таблицы, подчиненной таблице-источнику записей главной формы, т. е. находится с ней в отношении 1 : М. Подчиненная форма ото- бражает данные из всех записей подчиненной таблицы, которые связаны с запи- сью, отображаемой в главной форме. Для разработки такой формы можно проде- лать следующее: На основе главной таблицы создать командой Форма (Form) простую форму с макетом в столбик. На основе подчиненной таблицы командой Несколько элементов (Multiple Items) создать ленточную форму, это многозаписевая форма. Рис. 5.18. Составная форма в режиме макета Закрыть вторую форму, оставив первую открытой в режиме макета. Перетащить вторую форму из области навигации в первую форму, она отобра- зится в элементе управления Подчиненная форма/отчет (Subform/Subreport). Если не установилась связь между формами, следует в главной форме открыть свойства элемента управления Подчиненная форма/отчет (Subform/Subreport) и на вкладке Данные (Data) заполнить строки Основные поля (Link Master Fields) и Подчиненные поля (Link Child Fields). Это можно сделать с помо- щью построителя, вызываемого в строке первого свойства. Воспользовавшись приведенным алгоритмом, несложно создать составную форму на основе таблиц НАКЛАДНАЯ и ОТГРУЗКА (рис. 5.18). Связь этих форм осуществляется по составному ключу связи НОМ_НАКЛ и КОД_СК. В строке свойств они записываются через точку с запятой. Очевидно, для разработки полноценной формы для работы с накладными необ- ходимо дополнить главную форму данными из таблиц ДОГОВОР и ПОКУПАТЕЛЬ, а подчиненную форму данными из таблицы ТОВАР. Решить эту задачу можно, выполнив следующие действия: Создать запросы на выборку для источника записей главной формы на основе таблиц НАКЛАДНАЯ, ДОГОВОР и ПОКУПАТЕЛЬ, подчиненной формы — ОТГРУЗКА и ТОВАР, выбирая необходимые поля. На основе первого запроса создать простую форму командой Форма (Form), на оеснвотворого ленточную командой Несколько элементов (Multiple Items). Закрыть вторую форму и затем перетащить ее из области навигации в первую. Рис. 5.19. Составная форма для работы с накладными Для установки связи главной и подчиненной форм откройте свойства элемента управления Подчиненная форма/отчет (Subform/Subreport) и на вкладке Дан- ные (Data) заполните строки Основные поля (Link Master Fields) и Подчи- ненные поля (Link Child Fields). На рис. 5.19 приведена составная форма, в которой источником записей про- стой главной формы является первый запрос, а источником записей ленточной подчиненной формы второй. Создание многотабличной формы с помощью мастераОсновным средством создания многотабличной формы можно считать мастер форм, который, запросив у пользователя сведения о включаемых в форму полях из нескольких взаимосвязанных таблиц и запросов, создает составную или одиночную форму. При этом мастер может сам создать запросы на выборку, используемые в качестве источника записей формы. Полученная с помощью мастера форма при необходимости может быть отре- дактирована в режиме макета или конструктора. Режим конструктора позволяет детально просмотреть структуру формы. Настроить любой ее раздел. Некоторые задачи удобнее выполнять в режиме конструктора, а не макета, некоторые могут выполняться только в режиме конструктора. С помощью мастера создайте форму для работы с данными о покупателях и их договорах. Очевидно, такая форма должна строиться на основе двух таблиц: ПОКУПАТЕЛЬ и ДОГОВОР, находящихся в отношении 1 : М и связанных полем КОД_ПОК (код покупателя). Для одновременной работы с записью главной и не- сколькими связанными записями подчиненной таблицы целесообразно построить многотабличную составную форму, в которой в главную форму будет встроена подчиненная форма. Для вызова мастера форм выполните на вкладке ленты Создание (Create) в группе Формы (Forms) команду Мастер форм (Form Wizard). Отобразится окно мастера Создание форм (Form Wizard), представленное на рис. 5.20. Если предварительно в области переходов не была выбрана таблица ПОКУПТЕЛЬ, которая представляет сторону "один" в отношении 1 : М таблиц формы, выберите ее в раскрывающемся списке Таблицы и запросы (Tables/Queries) диалогового окна мас- тера. Далее отберите из списка Доступные поля (Available Fields), необходимые в форме, и переходите к выбору полей из подчиненной таблицы ДОГОВОР. ЗАМЕЧАНИЕ Порядок выбора таблиц не имеет принципиального значения. Из таблицы ПОКУПАТЕЛЬ обязательно выберите ключевое поле КОД_ПОК (код покупателя) и все другие обязательные поля, иначе форма будет непригодна для ввода сведений о новых покупателях. Из таблицы ДОГОВОР обязательно вы- берите ключевое поле КОД_ДОГ (код договора), а код покупателя (поле связи таб- лиц) выбирать не следует. Значения этого поля станут неоднократно повторяться в подчиненной форме, если покупатель заключил несколько договоров, а ввод значе- ния этого вторичного ключа в таблицу ДОГОВОР обеспечивается в форме автома- тически. Рис. 5.20. Выбор таблиц и полей для создаваемой формы ВНИМАНИЕ! Если выбраны таблицы, для которых не определена связь в схеме данных, появится со- общение о невозможности создать форму. При этом мастер предлагает или изменить состав полей, или выводит схему данных для возможного определения нужных связей. После изменения связей мастер должен запускаться заново. После выбора полей для обеих таблиц и нажатия кнопки Далее (Next) в окне Создание форм (Form Wizard) (рис. 5.21) в списке Выберите тип представления данных (How do you want to view your data) надо выделить имя таблицы ПОКУПАТЕЛЬ, которая является источником данных главной формы. Поскольку эта таблица была выбрана первой, то она уже выделена. Таблица ПОКУПАТЕЛЬ, как источник данных основной формы, в данном слу- чае является главной по отношению к другой выбранной для формы таблице ДОГОВОР, поэтому в окне Создание форм (Form Wizard) предлагается выбрать один из двух возможных вариантов подключения формы: для включения подчиненной формы в главную надо отметить переключатель Подчиненные формы (Form with subform(s)); для включения кнопки, вызывающей связанную форму, надо выбрать Связан- ные формы (Linked forms). Рис. 5.21. Выбор варианта включения подчиненной формы Выберем первый вариант с непосредственным включением подчиненной фор- мы. На рис. 5.18 видно, как распределяются поля в основной и подчиненной частях формы при выборе этого варианта. ЗАМЕЧАНИЕ Если таблица-источник основной формы является подчиненной по отношению к другой таблице, тоже выбранной для формы, то создаваемая многотабличная форма не будет включать подчиненную форму. При этом форма будет содержать в одной записи поля подчиненной таблицы и отобранные поля из главной таблицы. В окне Создание форм (Form Wizard) автоматически будет установлен тип формы Одиночная форма (Single Form). В следующем диалоговом окне предоставляется возможность выбрать вид ото- бражения данных в подчиненной форме: ленточный (tabular) или табличный (datasheet) (рис. 5.22). При выборе ленточного вида для списка выводимых в под- чиненной форме записей названия столбцов (полей) берутся из подписи, заданной в общих свойствах поля при конструировании подчиненной таблицы. В следующем диалоговом окна мастера (рис. 5.23) предоставляется возмож- ность выбрать стиль оформления, который определяет общий вид формы, отобра- жение надписей и значений полей в форме. В последнем диалоговом окне Создание форм (Form Wizard) можно изменить имена основной и подчиненной формы, если был выбран вариант с непосредствен- ным включением подчиненной формы (рис. 5.24), или имя связанной формы, если был выбран вариант включения кнопки, вызывающей связанную форму. Рис. 5.22. Выбор ленточного вида для подчиненной формы Рис. 5.23. Выбор оформления для создаваемой формы В том же окне можно выбирать дальнейшие действия — Открыть форму для просмотра и ввода данных (Open the form to view or enter information) или Изме- нить макет форм (Modify the form's design). Рис. 5.24. Задание имен форм и выбора режима отображения Рис. 5.25. Форма, открытая для просмотра, корректировки и ввода данных Если был выбран вариант Открыть форму для просмотра и ввода данных (Open the form to view or enter information), после нажатия кнопки Готово (Finish) мастер завершит создание формы и откроет ее в режиме формы (рис. 5.25), предна- значенном для работы с данными таблиц, на которых построена форма. Сохране- ние обеих форм, созданных мастером, производится автоматически. При выборе варианта Изменить макет формы (Modify the form's design) (см. рис. 5.24) форма после завершения работы мастера выводится в режиме конст- руктора (рис. 5.26), позволяющем произвести нужную доработку. Форма состоит из главной и подчиненной. В главной — в столбик представлены выбранные поля ис- точника данных главной формы. В подчиненной — в табличном макете представ- лены выбранные поля источника данных подчиненной формы. Рис. 5.26. Форма в режиме конструктора после завершения работы мастера В процессе доработки формы, используя технику редактирования формы, мож- но перемещать поля в главной форме, менять их свойства, в том числе шрифт и размеры, подпись поля, формировать текст в заголовке формы. Аналогичные дей- ствия по доработке выполняются для подчиненной формы. Следует отметить исключительную простоту и универсальность всех действий по изменению размеров, перемещению любого элемента, редактированию подпи- сей и подобных действий. На этапе доработки можно выполнить и более сложные действия по редактированию формы и настроить составную форму в соответствии с любыми требованиями к интерфейсу пользователя. Далее рассмотрены более подробно возможности Конструктора (Design) при создании и редактировании форм. Создание одиночной многотабличной формыОдиночную форму, включающую поля из нескольких связанных таблиц, по- зволяет быстро построить инструмент Пустая форма (Blank Form). Выполните команду Пустая форма (Blank Form) на вкладке ленты Создать (Create) в группе Формы (Forms). Откроется пустая форма в режиме макета и отобразится область Список полей (Field List). В списке перечислены все таблицы базы данных и пре- доставляется возможность открыть список полей каждой из них. Чтобы добавить поле в форму, дважды щелкните по нему или перетащите в форму. Для отображе- ния каждого поля Access создает в форме соответствующий элемент управления и привязывает его к полю. Кроме того, для элемента управления создается присоеди- ненная надпись. Важно понимать, что создание формы начинается с определения источника записей формы. Добавление полей в форму из Списка полей (Field List) автомати- чески решает эту задачу. При добавлении полей в форму автоматически создается инструкция SQL — SELECT. Эта инструкция записывается в строку свойств формы Источник записей (Record Source). В графическом представлении ее можно про- смотреть в построителе запросов, который можно вызвать командой Изменение источника записи (Edit Record Source) контекстного меню Списка полей (Field List). При последующих добавлениях полей из списка источник записей автомати- чески корректируется. Создание одиночной формы следует начинать с включения полей подчиненной таблицы. Эта таблица определит набор записей, отображаемых через форму, ее запись станет основой для образования записи формы. Далее можно добавлять по- ля из главных по отношению к ней таблиц. Создайте форму для просмотра накладных, выписанных для отгрузки товаров. При этом включите в просматриваемую накладную сведения о договоре, на осно- вании которого делается отгрузка, о покупателе и складе, с которого отгружается товар. Выполните команду Пустая форма (Blank Form). В области Список полей (Field List) откройте список полей таблицы НАКЛАДНАЯ, щелкнув знак "плюс" (+) рядом с ее именем. Добавьте в форму необходимые поля. Далее последовательно добавляйте поля из таблиц ДОГОВОР, ПОКУПАТЕЛЬ и СКЛАД. После добавле- ния полей из всех таблиц область Список полей (Field List) примет вид, показан- ный на рис. 5.27. Если при добавлении поля некоторой таблицы обнаруживается, что эта таблица не связана с таблицей, поля которой уже включены в форму, будет выведено окно для определения связи между ними. На рис. 5.28 показано такое окно при добавле- нии поля из таблицы ПОКУПАТЕЛЬ в случае, когда в форму уже включены поля из договора, а в схеме данных отсутствует связь между таблицами. На основе выбранных таблиц автоматически создается источник записей фор- мы — запрос на выборку. В этом запросе устанавливаются и созданные при пере- таскивании полей в форму связи между таблицами. Рис. 5.27. Область Список полей при создании одиночной формы Накладная Просмотреть и изменить запрос, являющийся источником записей формы, можно по команде Изменение источника записи (Edit Record Source) контекстно- го меню области Список полей (Field List). Соответствующую инструкцию SQL можно просмотреть в свойстве формы Источник записей (Record Source), пред- ставленном на вкладке Данные (Data). Рис. 5.28. Определение связи между таблицами при создании одиночной формы Накладная Рис. 5.29. Форма Накладная_одиночная, созданная с помощью инструмента Пустая форма Пользуясь инструментами группы Элементы управления (Controls) на вклад- ке Работа с макетами форм | Формат (Form Layout Tools | Format), добавьте в форму эмблему компании, заголовок, дату и время. Сохраните форму под именем Накладная_одиночная. Форма, построенная с помощью инструмента Пустая форма (Blank Form), представлена на рис. 5.29. |