| « Поставить закладку » « Сделать стартовой » | |||
|
|||
|
Глава 9. Создание составных форм.
Глава 9. Создание составных форм Формы являются
основным объектом, который обеспечивает пользователю удобный доступ к данным,
поэтому им уделено большое внимание в настоящей книге,-В первой части мы
показали несколько способов создания форм и детально описали основной инструмент
разработки форм — Конструктор. Вы убедились, какое многообразие возможностей
предоставляет этот инструмент для того, чтобы формы получились удобные и
красивые. Однако в гл. 5 "Создание форм для ввода данных" мы рассмотрели
лишь самые основные вопросы, относящиеся к работе с формами и элементами
управления. Здесь мы поговорим об этом более подробно и обсудим более сложные
вопросы, касающиеся создания и оформления составных форм — многотабличных и
многостраничных, и рассмотрим применение элементов управления всех типов.
Материал этой главы является продолжением гл. 5, поэтому рекомендуется
ознакомиться с ней прежде, чем переходить к дальнейшему изучению. Часть
материала о внедрении рисунков и других объектов в форму вынесена в гл. 15.
Мы будем еще раз возвращаться к формам в гл. 11 и 13 при рассмотрении
программирования в формах и отчетах с помощью макросов и процедур
VBA. Итак, в данной главе будут рассматриваться следующие вопросы:
Панель
элементов (Toolbox) является основным инструментом для добавления элементов
управления в форму в режиме Конструктора. Панель инструментов (Toolbox)
представлена на рис. 9.1.
Рис. 9.1.
Панель элементов Отображение панели элементов на экране выполняется одним из трех способов:
Наиболее часто
применяемые элементы управления расположены прямо на панели. Остальные элементы
отображаются в виде дополнительного списка, если нажать кнопку Другие
элементы (More Controls) в правом нижнем углу панели
элементов. В верхней части
панели элементов расположены две специальные кнопки: Выбор объектов
(Select Objects) и Мастера (Control Wizards). Кнопка Выбор
объектов в нажатом состоянии означает, что в данный момент включен режим
выделения элементов, т. е. реакцией на щелчок мыши в форме будет выделение
соответствующего элемента управления или другого объекта, попавшего в указанную
область. Этот режим включен по умолчанию. Однако, если нажать на другую кнопку
на панели элементов, предназначенную для создания элемента управления, кнопка
выбора объектов автоматически отжимается. Ее нужно снова нажать, если вы
передумали создавать элемент и хотите вернуться в режим выделения объектов.
Нажатая кнопка Мастера означает, что при размещении элемента управления
на форме запустится соответствующий мастер. При отжатой кнопке мастера не
запускаются и элементы требуется настраивать вручную. Мастера элементов помогают
создавать элементы управления, требующие определенной настройки, такие как поля
со списком, командные кнопки, группы элементов выбора. Практически для каждого
такого элемента управления существует свой мастер. Мастера элементов удобно
использовать как на начальном этапе работы с Access для обучения, так и в
дальнейшей работе, поскольку они автоматизируют рутинную операцию стандартной
настройки элемента, представляя ее в виде удобного диалога. Кроме мастеров
элементов, работу по настройке элементов управления облегчают специальные
мастера, помогающие в создании нетривиальных значений свойств элемента, их
называют построителями. Например, Построитель запросов (Query Builder) помогает
создать инструкцию SQL, которая определяет источник строк для списков и полей со
списками. Построитель выражений (Expression Builder) помогает создавать
синтаксически правильные выражения для вычисляемых элементов
управления. Основные кнопки,
расположенные на панели элементов, предназначены для создания элементов
управления разных типов. Название типа элемента управления отображается в виде
всплывающей подсказки при наведении указателя мыши на соответствующую кнопку на
панели управления. Панель элементов
обычно отображается как "плавающая" (см. рис. 9.1), так что ее можно свободно
перемещать по экрану, находя для нее удобное место. Перемещая с помощью мыши
рамку панели элементов, можно изменить ее размеры или закрепить у границы окна,
например так, как это показано на рис. 9.2.
Рис. 9.2.
Закрепленная панель элементов (внизу окна) Встроенные элементы
управления В виде кнопок
непосредственно на панели элементов размещаются лишь встроенные элементы
управления, в отличие от внедряемых объектов и элементов управления ActiveX,
которые могут быть добавлены в приложение (см. также гл.
15). Разновидности элементов управления по типу
содержимого В Access
существует три разновидности элементов управления, в зависимости от типа
содержимого в них, т. е. от способа заполнения их данными:
К какому из
перечисленных видов относится тот или иной элемент управления, определяется тем,
как задан для него источник данных. Присоединенные элементы управления связаны с полями базовой
таблицы, т. е. той таблицы, которая является источником данных для формы. Если
источником данных является запрос, то присоединенные элементы управления могут
связываться с полями в разных таблицах. В присоединенном элементе отображаются
данные, которые содержатся в связанном с ним поле таблицы, и при изменении этих
данных соответствующим образом обновляется и значение в поле таблицы. В
присоединенных элементах можно отображать все доступные в Access типы данных, в
том числе объекты OLE и гиперссылки. Свободные
элементы управления не связаны с таблицами. Они предназначены либо для ввода
информации, которая используется не для непосредственного редактирования данных
в источнике, а в других целях (обычно макросами или программами VBA), либо для
отображения объектов OLE, которые хранятся в самих формах. Свободными элементами
являются также все элементы, не связанные с какими-либо данными, а
предназначенные лишь для улучшения визуального восприятия форм, такие как линии,
прямоугольники, рисунки. Вычисляемые
элементы управления — это такие элементы, значения которых вычисляются на
основе значений других элементов. В качестве источника данных для этих элементов
используются выражения и функции. Элемент
Надпись (Label) используется для размещения в форме текста: заголовков
полей, заголовка формы, различных поясняющих надписей. Надписи бывают двух
типов:
Присоединенные надписи — это те, что существуют не самостоятельно,
а связаны с другими элементами управления, и служат их заголовками, т. к. других
видимых на экране заголовков у этих элементов нет. К таким элементам относятся,
например, текстовые поля, поля со списками, флажки, переключатели и др. Такого
типа надписи автоматически создаются при размещении соответствующего элемента
управления на форме и присоединяются к нему. При отображении формы в режиме
Таблицы присоединенные надписи становятся заголовками столбцов. Надписи, которые
создаются с помощью кнопки Надпись (Label) на панели элементов, являются
свободными, они не связываются ни с какими элементами управления. Эти надписи
служат для оформления формы или для помощи пользователю, однако они не
отображаются на экране, если форма выводится в режиме Таблицы. Свободную
надпись можно при необходимости присоединить к элементу
управления:
Надпись окажется
присоединенной к элементу управления. Текст надписи
определяется свойством Подпись (Caption), его можно изменить в диалоговом
окне свойств надписи или непосредственно в самой надписи, щелкнув по выделенной
надписи на форме. Текст надписей, как свободных, так и присоединенных, можно
изменять динамически при работе приложения с помощью макросов или программ VBA.
Можно также выводить новые надписи в форме или скрывать существующие при
выполнении определенных условий. Максимальная длина текста надписи — 2048
символов (см. также гл. 13). Кроме обычного текста, надпись (не
присоединенная к другому элементу) может также включать в себя гиперссылку. В
этом случае свойство Адрес гиперссылки (Hyperlink Address) содержит адрес
документа", на который ссылается гиперссылка, в формате URL или UNC. Указать
дополнительно элемент внутри данного документа, чтобы именно на него ссылалась
гиперссылка, позволяет свойство Дополнительный адрес (Hyperlink
SubAddress). Это могут быть закладка в документе, идентификатор поименованного
тэга, ссылка на лист и интервал ячеек в рабочей книге Excel или другой
адресуемый элемент в зависимости от типа документа. Например, чтобы гиперссылка
указывала на десятый слайд презентации PowerPoint, нужно задать следующие
значения свойств:
А чтобы
гиперссылка указывала на ячейку или интервал ячеек на листе электронной таблицы
Excel, дополнительный адрес должен иметь вид ИмяЛиста!ИмяИнтервала, например:
Лист1 !А2, Лист1 !А2:.В5 ИЛИ Лист1 !Итого. Создать
гиперссылку удобнее с помощью команды Вставка, Гиперссылка (Insert,
Hyperlink). Кроме надписей,
гиперссылку может включать в себя и элемент управления Кнопка. Для этого
у кнопок есть такие же свойства, задающие адрес гиперссылки. Замечание
Элемент
управления Поле (Text Box) наиболее часто используется, поскольку он
служит для ввода и отображения данных. Обычно значение в поле вводится
пользователем, однако можно задать его программно, присваивая значение свойству
Text этого элемента. С помощью этого же свойства можно программно узнать текущее
значение в поле. Длина текста, вводимого в текстовое поле, ограничена 65 535
символами. Как и многие другие элементы управления, текстовые поля могут быть трех типов:
Мы уже описывали
способы создания присоединенных и свободных текстовых полей (см. также разд.
"Создание и удаление элементов формы" гл. 5). О том, как создавать
вычисляемые поля, рассказано в разд. "Вычисления в формах" данной
главы. Элементы управления выбора: Выключатель, Переключатель,
Флажок и Группа О предоставлении
пользователю возможности выбирать значение из предложенного набора вариантов с
помощью элементов управления: флажков, переключателей, выключателей и групп
элементов — уже говорилось в гл. 5. Рассмотрим эти элементы управления
чуть более подробно. Три типа элементов: выключатели, переключатели и флажки —
выполняют одинаковые функции и используются для представления значения
логического типа данных. Они могут принимать значения о (Нет) или -1
(Да). Различаются они внешним видом (рис. 9.3).
Рис. 9.3.
Элементы управления выбора В верхней
строчке изображены элементы, значения которых равны Да, в следующей строчке —
эти же элементы, когда они имеют значение Нет. В третьей строчке изображены
переключатель и флажок, когда их значение не определено. Выключатель имеет
значение Да, когда он включен, и Нет — когда выключен. Переключатель имеет
значение Да, когда он выбран, и Нет — когда не выбран. Флажок имеет значение Да,
когда он установлен и Нет — когда сброшен. Если элементы выбора используются для
отображения логических данных, хранящихся в поле таблицы, нужно определить для
них значения по умолчанию, т. к. в противном случае в новой записи значения этих
элементов не будут определены. Значение по умолчанию задается как значение
одноименного свойства Значение по умолчанию (Default Value) либо в окне
свойств элемента, либо с помощью процедуры VBA, либо с помощью" макроса. Всякий
раз, когда пользователь щелкает мышью по элементу выбора, его значение
изменяется на противоположное. Поскольку эти
элементы предназначены в первую очередь для улучшения визуального восприятия
данных, то предусмотрено несколько вариантов их оформления. Для элемента
управления Флажок (CheckBox) эти варианты представлены на рис. 9.4,
остальные элементы имеют те же варианты оформления.
Рис. 9.4.
Варианты оформления элементов выбора Элемент
управления Группа (Option Group) используется для того, чтобы дать
возможность выбрать одно значение из небольшого набора вариантов. Пример групп
элементов был приведен на рис. 9.3. Если элементы выбора объединены с помощью
элемента управления Группа, то только один из этих элементов может быть
выбран пользователем, т. е. получит значение Да. Если требуется
задать несколько независимых признаков, например тип оплаты и способ вывоза
товара, необходимо создать несколько независимых элементов выбора или
групп. В одну группу
можно объединить элементы выбора даже разных типов, но к полю таблицы
присоединяется значение самой группы, а не составляющих ее элементов. Значением
группы является уникальное значение, сопоставленное выбранному элементу (обычно
это его порядковый номер). Чтобы привязать группу к источнику данных, установите
значение свойства Данные (ControlSource) элемента Группа (Option
Group). Чтобы выделить элемент Группа, а не элемент управления в группе,
нужно щелкнуть по рамке группы. Тогда в диалоговом окне Свойства
(Properties) отобразятся свойства группы (рис. 9.5). Здесь же можно
задать значение по умолчанию для группы, чтобы указать, какой элемент в группе
должен быть выбран по умолчанию. Элементы
управления в группе не должны присоединяться к полям таблицы (в окне свойств для
сгруппированных элементов даже не отображается свойство Данные
(ControlSource)). Зато для каждого из элементов управления в группе нужно
задать то уникальное значение, о котором мы упомянули, чтобы определить значение
самой группы, когда данный элемент будет выбран. Делается это с помощью свойства
Значение параметра (Option Value), которое должно быть числовым и
обязательно уникальным для каждого из элементов управления в группе (рис. 9.6).
В приведенном примере заданы следующие значения свойства Значение параметра
(Option Value): 1 — Оплачено полностью, 2 — Оплачено частично, 3 — Не
оплачено. Когда
пользователь выбирает один из переключателей в группе, значение элемента
управления Группа (Option Group) становится равным значению параметра
выбранного переключателя. Это значение сохранится в поле таблицы, которое
указано в качестве источника данных для группы. Для размещения
элемента управления Группа (Option Group) на форме можно воспользоваться
соответствующим мастером. Для демонстрации работы мастера рассмотрим процедуру создания группы,
аналогичной представленной на рис. 9.5. Создайте новую форму, открыв ее в режиме
Конструктора. Затем выполните следующие действия:
Рис. 9.5.
Свойства элемента управления Группа
Рис. 9.6.
Установка значения параметра переключателя
Рис. 9.7.
Первое диалоговое окно Мастера группы
Рис. 9.8.
Второе диалоговое окно Мастера группы
Рис. 9.9.
Третье диалоговое окно Мастера группы
Рис. 9.10.
Четвертое диалоговое окно Мастера группы
Рис. 9.11.
Пятое диалоговое окно Мастера группы
Рис. 9.12.
Последнее диалоговое окно Мастера группы
Рис. 9.13.
Группа флажков, созданная с помощью Мастера группы Элемент
управления Список (ListBox) используется для представления на экране
поля, возможные значения которого ограничиваются списком, причем списком
недлинным. Это связано с тем, что такой список занимает много места на экране
(рис. 9.14). И хотя можно использовать полосы прокрутки, чтобы посмотреть
значения, которые не помещаются в выделенную область, очевидно, что для
отображения длинных списков этот элемент управления не подходит. Список может
состоять из одного или нескольких столбцов, однако при выборе элемента списка в
связанное с ним поле таблицы передается только одно значение, например в
приведенных на рис. 9.14 списках это "КодТипа" (CategoryID) и "КодСотрудника"
(EmployeeID), которые в списках даже не отображаются. Внешний вид списка и его
содержимое определяются его свойствами, которые можно задать вручную, а можно
воспользоваться мастером при размещении списка в форме, который, запросив нужную
информацию, определит большую часть свойств автоматически. Создание списка с
помощью мастера уже демонстрировалось в первой части книги. Мастер списков очень
похож на Мастера, с помощью которого создаётся элемент Поле со списком
(см. разд. "Создание и удаление элементов управления" гл. 5). Для
того чтобы список правильно работал, нужно корректно определить его
важнейшие свойства —
это первые восемь свойств на рис. 9.15. Соответственно, если он работает
неправильно, именно эти свойства нужно проверять в первую
очередь.
Рис. 9.14.
Элементы управления Список
Рис. 9.15.
Свойства элемента управления Список
Замечание
Кроме
рассмотренного, существуют еще три типа источников строк для элемента управления
Список (ListBox):
Рис. 9.16.
Использование функции в качестве источника строк Несколько слов о
третьем типе источника строк списка. Эта функция должна иметь такой список
аргументов: Function
Имя_функции(fid As Control, id As Variant, _ row As Variant, col
As Variant, code As Variant) As Variant Данная функция
вызывается Access каждый раз, когда требуется заполнение списка элементами.
Например, это происходит автоматически, когда форма, содержащая список,
открывается в первый раз. Вызвать обновление содержимого списка в какой-то
другой момент можно программно, с помощью метода обновления содержимого элемента
управления Require. Каждый раз при обновлении содержимого списка эта функция
вызывается неоднократно: с различным "кодом действия". Поясним значения
ее аргументов и возвращаемого значения.
Все значения
аргументов формируются и передаются в функцию самим Access. Разработчику только
остается их обработать. О создании
функции, выполняющей роль источника данных для списка или поля со списком, можно
получить подробную информацию в справочной системе Access 2002, в разд. "Справка
по Microsoft Access, Программирование на Visual Basic, Справочник по Visual
Basic для Microsoft Access, Свойства, Q-R, RowSourceType" (Microsoft Access
Help, Programming in Visual Basic, Microsoft Access Visual Basic Reference,
Properties, Q-R, RowSourceType Property). Пример использования такой функции
можно найти также на компакт-диске, являющемся дополнительным приложением к
данной книге, который продается отдельно. Свойство
Присоединенный столбец (Bound Column), определяющее тот столбец списка,
значение которого при выборе становится значением элемента управления, может
иметь значение 0. В этом случае значением элемента Список (List Box)
станет индекс (номер) выбранного элемента в списке. Элемент
управления Список интересен еще и тем, что он позволяет делать
множественный выбор в списке, т. е. в нем можно выбрать одновременно несколько
элементов, чего не позволяет делать элемент Поле со списком (Combo Box).
Такая возможность требуется довольно часто, когда задаются критерии отбора
записей. Например, в базе данных объектов недвижимости надо найти интересующие
клиента квартиры, а его интересуют квартиры в определенных районах города.
Можно, конечно, выбирать в списке по очереди сначала один район, чтобы выбрать
все квартиры в данном районе, потом другой и т. д. Однако удобнее в этом случае
использовать для указания интересующих районов список, в котором выбираются
сразу все интересующие районы, а потом формируется соответствующий запрос к базе
данных. Определить, как
пользователь будет выбирать значения из списка, можно с помощью свойства
Несвязное выделение (Multi Select). Его можно найти на вкладке
Другие (Other)
окна свойств. По умолчанию это свойство имеет значение Отсутствует
(None). В этом случае разрешается ныбор только одного элемента из списка. Но
это свойство может иметь значения Простой (Simple) и Со связным
выбором (Extended). В первом случае разрешается множественный выбор просто
щелчком мыши по нужным элементам, а во втором список работает так, как почти все
списки в Windows, т. е. можно использовать клавиши Элемент управления Поле со списком Элемент
управления Поле со списком (ComboBox) во многом аналогичен элементу
управления Список (ListBox). Применяется он в формах для той же самой
цели, т. е. когда требуется, чтобы значение поля в таблице не вводилось вручную,
а выбиралось из известного списка значений. Как правило, этими списками являются
различного рода справочники. Отличий между этими типами элементов управления
три:
Основные
свойства для элемента управления Поле со списком (Combo Box) такие же,
как и у элемента управления Список (List Box), однако есть дополнительные
свойства, которые определяют формат вывода данных в текстовую часть поля:
Формат поля (Format), Число десятичных знаков (Decimal Places),
Маска ввода (Input Mask) (рис. 9.17). Еще два
дополнительных свойства определяют особенности работы поля со
списком:
Рис. 9.17.
Свойства элемента Поле со списком Обычно поле со
списком используется для.тех полей базовой таблицы, которые служат внешними
ключами, т. е. содержат значения, соответствующие первичным ключам записей в
какой-либо другой таблице. В таблице такие поля обычно определяют как поля
подстановки, т. е. при отображении этих полей отображается не то значение,
которое содержится в данном поле, а соответствующее значение из связанной
таблицы (ведь ключом часто является ничем не примечательный код) (см. также
разд. "Создание таблиц"гл. 2). В этом случае Мастер форм при создании формы
автоматически создаст для таких полей поля со списком и задаст их
свойства. Совет
Элемент
управления Кнопка (Command Button) является очень важным элементом формы,
поскольку именно с кнопками связаны различные действия, выполняемые
пользователем в приложении (сохранение введенных данных, вызов другой формы,
вывод на печать документа и т. д.). Обычно кнопка выбирается, когда пользователь
щелкает по ней мышью. Однако можно выбрать (нажать, т. к. визуально это именно
так и выглядит) кнопку, используя только клавиатуру. Для этого нужно поместить
на нее фокус, т. е. сделать активной, нажимая клавишу <Таb>, а затем
нажать клавиши <Пробел> или Создать кнопку
намного удобнее с помощью Мастера кнопок, поскольку он выполнит за вас большую
работу и даже напишет программу, которая будет выполнять действия, для которых
данная кнопка предназначена. Например, рассмотрим процесс создания кнопки,
которая будет открывать новую форму:
Рис. 9.18.
Первое диалоговое окно Мастера кнопок
Рис. 9.19.
Второе диалоговое окно Мастера кнопок
Рис. 9.20.
Третье диалоговое окно Мастера кнопок
Рис. 9.21.
Четвертое диалоговое окно Мастера кнопок
Рис. 9.22.
Пятое диалоговое окно Мастера кнопок На форме
появилась кнопка. Если вы потом решите все-таки поместить на кнопку какую-нибудь
картинку, это можно сделать, установив свойство Рисунок (Picture), для
чего вы можете воспользоваться Построителем, который предлагает либо выбрать
одну из стандартных картинок, либо использовать графический файл, например
созданный в графическом редакторе Paint в Windows (рис. 9.23). Можно назначить
элементу управления Кнопка (Command Button) комбинацию клавиш. Это бывает
оправдано, например, если пользователь работает с клавиатурой и ему неудобно для
нажатия кнопки переключаться на мышь, а также, если в форме много элементов и
для активизации кнопки приходится много раз нажимать клавишу
Рис. 9.23.
Размещение рисунка на кнопке
Рис. 9.24.
Назначение кнопке комбинации клавиш Для любой формы
можно создать две специальные кнопки:
Такая кнопка
играет роль отмены по умолчанию. Для нее должно быть присвоено значение Да (Yes)
свойству Отмена (Cancel). Элементы управления Свободная рамка объекта и
Присоединенная рамка объекта Элементы
управления Свободная рамка объекта (Unbound Object Frame) и
Присоединенная рамка объекта (Bound Object Frame) используются для того,
чтобы вставить в форму объекты, созданные в других приложениях, например
документ Word или таблицу Excel или рисунок. Эти элементы различаются тем, будут
ли объекты, вставленные в эти рамки, храниться в таблицах Access или не
будут. Свободная
рамка объекта (Unbound Object Frame) содержит объект, который хранится либо
в самой форме, либо во внешнем файле и независимо от того, какая запись
отображается в форме, будет отображаться один и тот же объект. Этот объект может
быть изменен прямо из формы с помощью того приложения, в котором он был
создан. Присоединенная рамка объекта (Bound Object Frame) содержит объект,
который хранится в таблице, в поле, имеющем тип Поле объекта OLE (OLE
Object). Поэтому присоединенная рамка объекта имеет в качестве источника данных
поле в базовой таблице. Типичный пример такого элемента управления — фотографии
людей, изделий и т. д. Подробно создание и использование этих элементов управления рассмотрено в гл. 15. Элемент
управления Рисунок (Image) очень похож по своему назначению и свойствам
на элемент Свободная рамка объекта. Он предназначен для вставки в форму
графических файлов, но требует меньше системных ресурсов и работает быстрее, чем
Свободная рамка объекта. Форматы графических файлов, которые
поддерживаются Access, разнообразны — это растровые рисунки, метафайлы, значки и
др. Подробно
создание и использование этого элемента управления рассмотрено в гл.
15. Элемент управления Разрыв страницы Элемент
управления Разрыв страницы (Page Break) используется в многостраничных
формах для того, чтобы определить место конца одной и начала новой
страницы.
Рис. 9.25.
Свойства элемента Разрыв страницы На форме этот
элемент отображается в виде пяти горизонтально расположенных точек и имеет всего
четыре свойства: Имя (Name), координаты относительно верхнего левого угла
формы — От левого края (Left) и От верхнего края (Тор) и
Дополнительные сведения (Tag) (рис. 9.25). Для переключения
между страницами в такой форме используются клавиши Элемент управления Набор вкладок Элемент
управления Набор вкладок (Tab Control) также используется для создания
многостраничных форм. Он позволяет придать формам такой же вид, как у диалоговых
окон свойств в Windows. В этом элементе может быть от одной до нескольких
вкладок. Переключение между вкладками формы выполняется щелчком кнопкой мыши по
ярлыку вкладки. Вкладки могут иметь два варианта оформления: ярлыки и кнопки
(рис. 9.26). В таких формах
Access на ярлыках могут размещаться не только надписи, но и рисунки, а также
надписи и рисунки вместе. Если требуется отобразить большое количество вкладок,
можно их разместить в несколько рядов. О создании форм, содержащих несколько
вкладок, рассказано в разд. "Создание многостраничных форм" данной
главы.
Рис. 9.26.
Элемент управления Набор вкладок Элемент управления Подчиненная форма/отчет Элемент
управления Подчиненная форма/отчет (Subform/Subreport) используется для
отображения в форме другой формы (см. также разд. "Создание многотабличных
форм " в этой же главе). Элементы управления Линиям Прямоугольник Элементы
управления Линия (Line) и Прямоугольник (Rectangle) используются
для оформления внешнего вида форм, чаще всего для выделения группы логически
связанных элементов управления. Для управления
цветом и стилем линии, а также для окантовки прямоугольника используются
свойства Цвет границы (Border Color), Тип границы (Border Style),
Ширина границы
(Border Width) и Оформление (Special Effect). Для прямоугольника
можно также задать свойства Тип фона (Back Style) и Цвет фона
(Back Color). Существует
восемь вариантов типа линии и границ прямоугольника: Отсутствует, Сплошная,
Штриховая, Пунктирная, Точечная, Редкоточечная, Штрих-пунктирная и
Штрих-точечная (Transparent, Solid, Dashes, Short Dashes, Dots, Sparse Dots,
Dash Dot, Dash Dot Dot соответственно). Для линии и границ прямоугольника
определено шесть вариантов оформления: обычное, приподнятое, утопленное,
вдавленное, с тенью, рельефное (Flat, Raised, Sunken, Etched, Shadowed,
Chiseled соответственно) (это больше, чем было доступно в предыдущей версии —
Access 2000). Цвет границы и
цвет фона задаются с помощью Построителя, который позволяет выбрать один из 64
предложенных цветов или определить собственный цвет. На рис. 9.27
представлены различные варианты оформления прямоугольников и линий.
Тип фона для прямоугольника имеет два значения:
Рис. 9.27.
Различные варианты оформления прямоугольника и
линии Преобразование одного элемента управления в
другой Иногда в
процессе разработки формы требуется изменить тип элемента управления для
отображения какого-либо поля. Такая ситуация может возникнуть, например, из-за
ошибки в начальном выборе типа элемента. Чаще всего требуется преобразовать
текстовое поле в поле со списком или изменить тип элемента выбора, заменив
флажок переключателем
или выключатель переключателем. В режиме Конструктора форм можно легко это
сделать:
Рис. 9.28.
Преобразование одного элемента управления в другой
Замечание
К многотабличным
формам относят формы, построенные на основе запроса, объединяющего несколько
таблиц, а также формы с внедренными в них другими формами. Создание
многотабличных форм на основе запроса рассматривалось ранее (см. также разд.
"Создание форм для ввода данных" гл. 5). В данном разделе
мы остановимся на создании сложных форм, включающих подчиненные
формы. Подчиненной
формой называется форма, которая встраивается в другую форму. При этом
форма, которая включает подчиненную форму, называется основной ('или
главной) формой. Обычно такие
формы применяются для отображения данных из связанных таблиц, например категории
товаров и товары, организации и контактные лица в этих организациях и т. д.
Однако это бывает не всегда. Иногда главная форма содержит свободные элементы
управления и различные кнопки, которые влияют на представление данных в
подчиненной форме. Типичным примером такой формы является форма для отбора
записей в таблице. Основная форма содержит поля, в которых задаются критерии
отбора и кнопки Фильтр или Поиск и Отмена фильтра или Показать все
(рис. 9.29).
Рис. 9.29.
Пример формы, содержащей подчиненную форму Применение
встроенных подчиненных форм обеспечивает более компактное представление на
экране данных из нескольких таблиц, чем использование разных форм для каждой
таблицы. Создавать такие
формы можно разными способами. Рассмотрим сначала способы создания главной и
подчиненной форм для двух связанных таблиц. Создание главной и подчиненной форм с помощью Мастера
автоформ В предыдущей
версии Access — Access 2000 появилась возможность более интеллектуального
автоматического отслеживания связей между таблицами. Поэтому самые простые формы
для связанных таблиц можно построить с помощью Мастера автоформ. Он сразу найдет
все таблицы, которые связаны с главной отношением "один-ко-многим", и создаст
для каждой такой таблицы подчиненную форму. В качестве примера давайте создадим
новую форму "Клиенты", в которой должны быть отражены не только данные о
клиенте, но и о его заказах. Сначала откройте
окно Схема данных (Relationship) и посмотрите, как связаны интересующие
нас таблицы (рис. 9.30). Таблица "Клиенты" (Customers) связана с таблицей
"Заказы" (Orders) отношением "один-ко-многим". В свою очередь таблица "Заказы"
(Orders) связана с таблицей "Заказано" (Order Details) тоже отношением
"один-ко-многим".
Рис. 9.30.
Диалоговое окно Схема данных приложения
"Борей" Теперь в окне
базы данных на странице Таблицы (Table) выделите таблицу "Клиенты" и нажмите
стрелку вниз на кнопке Новый объект (New Object) на панели инструментов. В
открывшемся списке выберите объект Автоформа (AutoForm). Подождите, пока
Мастер автоформ закончит свою работу. В результате вы должны увидеть на экране
форму, которая представлена на рис. 9.31. Чтобы открыть
вторую подчиненную форму (список подчиненных записей следующего уровня), просто
щелкните мышью по квадратику с крестом слева от выбранной записи в подчиненной
форме. В данном примере в главной форме отображается одна запись о клиенте, а в
подчиненной форме отображаются только те записи из таблицы "Заказы" (Orders),
которые связаны с текущей записью в главной форме, т. е. только заказы текущего
клиента. В списке подчиненных записей для выбранного заказа отображается список
заказанных продуктов.
Рис. 9.31.
Составная форма, созданная Мастером автоформ Уже из этой
формы видно, что Access обеспечивает вложенность подчиненных форм, причем
максимальное количество уровней вложенности достаточно велико — 7. С другой
стороны, если таблица связана отношением "один-ко-многим" с несколькими
таблицами, то в одну главную форму можно встроить любое количество подчиненных
форм. Такое
иерархическое представление связанных данных удобно не только для отображения,
но и для ввода данных. Например, нужно
оформить заказ клиенту, которого еще нет в базе данных. Значит, требуется
добавить запись о новом клиенте в таблицу. Для этого перейдите в режим ввода
записи в главной форме, щелкнув мышью по кнопке Новая запись (New Record)
внизу формы или на панели инструментов. Введите данные о клиенте, а затем
переместите фокус в подчиненную форму для оформления заказа. Как только вы
переместите фокус в подчиненную форму, запись о клиенте из главной формы
будет сохранена. Теперь
подчиненная запись о заказе будет корректно добавлена в таблицу "Заказы"
(Orders), гарантируя сохранение ссылочной целостности. Аналогично будет
сохранена запись о заказе, прежде чем начнут вводиться данные о заказанных
продуктах во вложенной подчиненной форме. Записи в подчиненной форме сохраняются
при переходе к каждой следующей строке. Использование Мастера форм для создания главной и
подчиненной форм Составную форму
с подчиненными формами можно создать также с помощью Мастера форм. Это несколько
сложнее, чем использование Мастера автоформ, но зато дает возможность поместить
в формы не все поля, а только те, что требуется. Рассмотрим
создание такой формы для таблиц "Сотрудники" (Employees) и "Заказы" (Orders).
Снова обратимся к схеме данных (см. рис. 9.30) и убедимся, что таблица
"Сотрудники" (Employees) связана с таблицей "Заказы" (Orders) отношением
"один-ко-многим":
Рис. 9.32.
Первое диалоговое окно Мастера форм
Рис. 9.33.
Второе диалоговое окно Мастера форм
Рис. 9.34.
Составная форма, созданная Мастером форм
Теперь можно
открыть эту форму в режиме Конструктора и настроить ее нужным
образом. Добавление подчиненной формы в главную форму Подчиненная
форма является элементом управления и, как и все остальные элементы, может быть
добавлена в главную форму с помощью Мастера подчиненных форм. При этом ее можно
создать заранее, и тогда мастеру нужно будет только указать имя добавляемой
формы. Если подчиненная форма еще не создана, мастер поможет ее
создать. В качестве
примера добавим в форму "Поставщики" (Suppliers) подчиненную форму, которая
будет содержать список товаров текущего-поставщика (в исходной версии базы
данных "Борей" товары поставщика отображаются в отдельной связанной форме при
нажатии кнопки Просмотр товаров (Review Products)):
Рис. 9.35.
Второе диалоговое окно Мастера подчиненных форм
Рис. 9.36.
Третье диалоговое окно Мастера подчиненных форм Результат работы
мастера представлен на рис. 9.37. Мастер
подчиненных форм удобен тогда, когда подчиненная форма еще не создана. Если
подчиненная форма уже существует, можно просто разместить рядом окно базы данных
с раскрытой страницей Формы (Forms) и главную форму, открытую в
режиме Конструктора и
просто перетащить мышью нужную форму из окна базы данных в главную форму. При
этом главная становится подчиненной формой и автоматически устанавливается связь
между формами.
Рис. 9.37.
Подчиненная форма "Товары" внутри формы
"Поставщики" Связывание главной и подчиненной форм Связывание
главной и подчиненной форм осуществляется с помощью свойств Основные поля
(Link Master Fields) и Подчиненные поля (Link Child Fields) элемента
управления Подчиненная форма/отчет (Subform/Subreport). Как мы уже
сказали, мастера форм автоматически заполняют эти свойства, основываясь на
связях между таблицами. Если связи не заданы, то связующими полями считаются
поля в таблицах, которые имеют одинаковые имена и совместимые типы данных. При
этом связующее поле в базовой таблице для главной формы должно быть
ключевым. Если при
разработке иерархической формы данные в главной и подчиненной формах окажутся не
синхронизированными, следует проверить значение свойств Основные поля
(Link Master Fields) и Подчиненные поля (Link Child Fields) и ввести
или откорректировать их значения:
Рис. 9.38.
Определение связей между главной и подчиненной
формами В левой части
окна расположены раскрывающиеся списки для выбора связующих полей в главной
форме, в правой — для выбора связующих полей в подчиненной форме. Связь может
задаваться с помощью нескольких полей. Это может быть, если ключевое поле в
главной таблице составное. Построитель позволяет задать максимум три поля и, как
правило, этого хватает. В противном случае нужно просто вписать недостающие поля
в значения свойств, разделив их точкой с запятой. Важно только, чтобы поля в
каждом из данных свойств перечислялись в одинаковом порядке. В предложенных
списках содержатся все поля базовых таблиц или запросов. Это означает, что
связующие поля необязательно должны присутствовать в формах, они обязаны
присутствовать в источнике данных формы. Синхронизация данных в элементах
формы В этом разделе
приведены некоторые типичные примеры, иллюстрирующие отображение в форме данных
в соответствии со значениями некоторых ее элементов. Вообще говоря, подобные
приемы можно применить для синхронизации данных как в простых, так и в составных
формах, содержащих подчиненные формы. Примеры подобраны, исходя из наиболее
часто встречающихся вопросов у наших читателей. Мы надеемся, что изучение этого
раздела, а также применение комбинаций описанных приемов, помогут читателям
решить основные задачи при проектировании интерактивных форм. Переход на определенную запись в форме Типичной задачей
является организация более удобного чем последовательный перебор перехода по
записям в форме, задавая значения каких-то полей записи, для ее поиска по ним.
Например, в форме с информацией для большого количества сотрудников хотелось бы
быстро перейти к карточке сотрудника с известной фамилией. Это можно сделать с
помощью специального списка для выбора фамилии. В разд.
"Создание элементов управления с помощью панели элементов" гл. 5 мы
упомянули о том, что при создании списка/поля со списком с помощью Мастера в
форме, привязанной к источнику данных, Access предлагает сделать его средством
перехода к нужной записи в форме. Рассмотрим пример создания такого
списка:
Форма готова.
Откройте ее в режиме Формы и убедитесь, что при выборе желаемых фамилии и имени
в созданном поле со списком осуществляется переход к информации об этом
сотруднике. Такое поле со списком удобно и тем, что значение в нем можно не
только выбрать, но и просто ввести первые буквы фамилии — необходимый элемент
будет выбран автоматически. Останется нажать клавишу Действие
созданного поля со списком обеспечивается процедурой обработки события После
обновления (After Update), сгенерированной мастером (см. также разд.
"Создание процедур обработки событий"гл. 13). Динамическая фильтрация данных Предположим, у
нас есть форма, содержащая подчиненную форму, в которой отображается много
записей, и вы хотели бы интерактивно задать в главной форме какое-нибудь условие
для отбора интересующих записей в подчиненной форме, чтобы упростить их
визуальный анализ. Это несложно
сделать с помощью применения фильтра для источника данных формы (в данном случае
— подчиненной). Фильтр можно применить двумя способами:
Первый способ
применения фильтра в форме во многом аналогичен подобным действиям в режиме
Таблицы, которые были рассмотрены в разд. "Фильтрация данных" гл. 2.
Здесь мы рассмотрим второй способ. В этом случае
применяются свойства формы Фильтр (Filter) и Фильтр включен
(Filter On). Свойство Фильтр (Filter) содержит строковое значение —
предложение WHERE на языке SQL (без ключевого слова WHERE). Свойство Фильтр
включен (Filter On) определяет, применен ли фильтр, указанный в свойстве
Фильтр (Filter), к форме. В отличие от свойства Фильтр включен
(Filter On), свойство Фильтр (Filter) можно задать и в режиме
Конструктора, в окне свойств формы, чтобы фильтр применился в момент загрузки
формы. Но нам нужно изменять фильтр динамически — в процессе работы с формой в
режиме Формы. Мы реализуем это с помощью процедуры VBA. :
. И хоть данная
глава не предназначена для описания программирования на VBA, мы приведем пример
соответствующей процедуры VBA, поскольку он обеспечивает несложное решение
довольно типичной задачи. Рассмотрим
решение этой проблемы на примере формы "Типы" (Categories), содержащей
подчиненную форму "Список товаров" (Product List). Организуем отбор товаров в
подчиненной форме в зависимости от наличия их поставок:
Таблица
9.1. Свойства фильтрующего элемента
Замечание
|