Краткое содержание 29 Об этих стрелках 30 о сочетаниях клавиш 32 о щелчках кнопкой мыши 33 Примеры 33
Скачать 19.64 Mb.
|
Рис. 14.8. Причина, по которой может возникнуть необходимость разных представлений, — использование вашей БД разными людьми. В примере с БД Cacophone Studios администрация просматривает формы для создания классов и регистрации студентов (с помощью представления Administration), в то время как преподаватели должны печатать ведомости посещаемости и создавать домашние задания студентам (с помощью представления Teachers, выделенного в данном примере). Как видно, это представление содержит группы Attendance and Marking (посещаемость и успеваемость) и Payments (платежи). У каждой из них свой набор форм и отчетов Можно также изменить имя представления, содержащего все ваши группы. Первоначально эта категория называется Custom, но можно задать более информативное имя, выбрав категорию в диалоговом окне Параметры переходов и щелкнув мышью кнопку Переименовать элемент. Если хочется большего, можно создать несколько режимов отображения пользовательских категорий верхнего уровня. Щелкните мышью кнопку Добавить элемент, чтобы вставить новую категорию, и кнопку Удалить элемент для удаления категории. На рис. 14.8 приведен пример с несколькими пользовательскими категориями.
Поиск в списке области переходов Если вам не нравится, когда что-то исчезает из вида, возможно, в этом случае придется выводить в области переходов громоздкий список объектов. Но у программы Access есть удобный инструмент, позволяющий экономить время на прокрутке, — поле поиска, которое помогает перейти к объекту почти мгновенно при условии, что вы знаете его имя. Для отображения поля поиска выполните следующие действия.
Поле поиска появится над списком объектов в области переходов. По мере ввода программа Access фильтрует список объектов так, чтобы он включал только объекты, соответствующие строке поиска (рис. 14.9). Рис. 14.9. Объекты, соответствующие строке поиска, содержат введенный текст. Если ввести "Class", вы увидите такие объекты, как Classes и Students_Classes Построение форм со средствами автоматического перехода Область переходов — неоценимое средство перемещения в вашей БД, но оно устраивает не всех. Пользователи, никогда раньше не работавшие в программе Access, могут счесть его несколько замысловатым и лишенным защиты от произвольного изменения параметров переходов (и открытия объектов, которые открывать не следует). Для получения дополнительных средств управления и создания дружественной внешней оболочки многие специалисты Access встраивают средства переходов в свои формы (и иногда в отчеты). В конце концов, форма предоставляет практически неограниченные возможности настройки. Можно вставить абзац текста, добавить яркий выигрышный фон и эмблему компании и ограничить приводящие в замешательство варианты несколькими простыми дружественными кнопками. Если вы твердо решили использовать формы для переходов, прежде всего, нужно выбрать тип формы для проектирования. Программа Access предлагает несколько вариантов, включая встроенную поддержку объекта, именуемого кнопочной формой. Создание кнопочной формы Кнопочная форма — это форма, единственная цель которой перенаправить вас к другим формам (обычно при щелчке мышью кнопки формы). Она — своего рода главное меню вашей БД. Такая форма — одновременно и отправная точка, и центр действий. Типичная кнопочная форма содержит набор кнопок, направляющих в разные места. На рис. 14.10 показана разновидность кнопочной формы, создаваемая программой Access. Примечание Созданная кнопочная форма подобна форме любого другого типа, поэтому после ее создания можно использовать навыки, приобретенные в последних двух главах, для придания вашей кнопочной форме внешней привлекательности. Рис. 14.10. Эта кнопочная форма программы Access предоставляет доступ к пяти разным формам одним щелчком кнопки мыши. Достоинство кнопочных форм Access заключается в возможности построения собственного варианта за считанные секунды. К недостаткам можно отнести несколько старомодный внешний вид, заставляющий впечатлительных пользователей проектировать собственные кнопочные формы с нуля Для автоматического создания кнопочной формы следует применять Мастер форм (Form wizard). Далее описывается, как он работает. 1. Выберите на ленте Работа с базами данных → Работа с базами данных → Диспетчер кнопочных форм (Database Tools → Database Tools → Switchboard Manager). Когда вы первый раз в БД щелкните мышью эту кнопку, программа Access сообщит о том, что не может найти кнопочную форму и предложит ее создать. Щелкните кнопку Да для продолжения работы Диспетчера кнопочных форм (рис. 14.11). Если кнопочная форма уже существует, переходите к пункту 2, в котором можно редактировать текущую кнопочную форму. Рис. 14.11. Диспетчер кнопочных форм выводит на экран список страниц. Каждая страница — отдельная часть меню кнопочной формы. У самых простых кнопочных форм только одна страница, что означает поддержку формой одного уровня глубины и выполнение каждой кнопкой полезного действия (например, открытие формы или отчета) Рис. 14.12. Окно Изменение страницы кнопочной формы позволяет создавать команды меню, удалять те, которые больше не нужны, изменять порядок их следования (этот порядок определяет порядок команд на кнопочной форме) 2. Щелкните мышью кнопку Изменить для редактирования страницы кнопочной формы. На экране появляется окно Изменение страницы кнопочной формы (рис. 14.12). Именно здесь определяются реальные команды меню. 3. Для создания новой команды меню щелкните мышью кнопку Создать. На экран выводится окно Изменение элемента кнопочной формы (рис. 14.13). Для создания команды меню необходимо предоставить две порции информации: текст, появляющийся на форме, и команду, которую должна выполнить программа Access, когда вы щелкните мышью кнопку. Рис. 14.13. Эта команда запускает отчет Attendance (посещаемость). Из раскрывающегося списка Команда выберите действие, которое должна выполнять команда 4. Введите текст меню и затем выберите действие, которое должна выполнять кнопка. Возможны следующие варианты:
5. Повторяйте пункты 3 и 4 до тех пор, пока не создадите все нужные команды. Затем щелкните мышью кнопку Закрыть для возвращения в главное окно Диспетчера кнопочных форм. У кнопочных форм есть неприятный секрет. На каждой странице можно поместить только восемь команд меню. Если вам нужно больше (а кому же не нужно?), следует добавить дополнительные страницы в ваше меню. На профессиональном уровне. Кнопочные формы с несколькими страницами В каждый момент времени кнопочная форма отображает одну страницу с командами меню. Когда такая форма создается впервые, у нее всего одна страница. Но вы можете легко добавить дополнительные в окне Диспетчера кнопочных форм (см. рис. 14.11) с помощью кнопки Создать. У кнопочных форм нет встроенных средств перехода с одной страницы на другую. Вместо этого вы должны самостоятельно вставить команду Перейти к кнопочной форме (Go to Switchboard). Допустим, у вас есть три страницы — главная и еще две с дополнительными командами. На главной странице вам понадобятся две команды Перейти к кнопочной форме, каждая будет переходить на одну из новых страниц. На новых страницах также нужна команда Перейти к кнопочной форме, которая позволит вернуться на главную страницу. Применение нескольких страниц в кнопочных формах нельзя назвать идеальным. Они очень напоминают досаждающие кнопочные меню тонального набора в автоматизированных системах голосовой почты. Прежде чем вы освоите их, вы вынуждены переходить на страницы, у которых есть дополнительные страницы и так пробираться через все команды, пока не найдете нужную. Поэтому, если возможно, ограничьте вашу кнопочную форму восемью задачами. Если вы Достаточно искусны, то можете собрать вместе несколько форм, используя либо подчиненные формы, либо кнопки, позволяющие переходить к связанным записям. Если же вам действительно и непременно нужна более сложная кнопочная форма, подумайте о разработке собственной. В этом случае вы сможете разделить все кнопки переходов на отдельные секции, нарисовать границы вокруг логически связанных кнопок, добавить надписи с пояснительным текстом и т. д. В результате она, возможно, будет выглядеть гораздо лучше. 1. Если вы решили использовать несколько страниц в кнопочной форме, щелкните мышью кнопку Создать для добавления страницы, введите имя страницы и щелкните мышью кнопку ОК. Далее щелкните мышью кнопку Изменить для вставки команд и в завершение кнопку Закрыть. Следуйте инструкциям, приведенным в пунктах 3—5 для вставки команд на данную страницу. 2. Когда создание кнопочной формы завершено, щелкните мышью кнопку Закрыть в окне Диспетчера кнопочных форм. Для того чтобы испытать вашу кнопочную форму, найдите новую, созданную программой Access кнопочную форму и дважды щелкните ее кнопкой мыши. Кнопочные формы не всегда корректно отображаются в режиме окон со вкладками, используемом программой Access. Главным образом у них появляется дополнительное пустое пространство внизу и справа. Для решения этой проблемы можно отобразить кнопочную форму как всплывающее окно, которое выводится поверх всех остальных окон. В этом случае размер окна отображается корректно. Для внесения этого изменения откройте форму в Конструкторе. Настройте форму с помощью Окна свойств, выбрав на вкладке Другие свойство Всплывающее окно и задав в нем значение Да. За кадром. Меню кнопочных форм сохраняются в БД Если вы относитесь к типу людей, которым нравится беспокоиться о потенциальных проблемах, которые могут возникнуть на горизонте, то, возможно, уже заметили в мире кнопочных форм кое-что подозрительное. Легко представить себе сценарий, в котором вы создали замечательную кнопочную форму, а затем решили перепроектировать свою БД с помощью нескольких новых форм. В этой ситуации не хотелось бы иметь новые формы и старую кнопочную форму, в которой нет кнопок, предназначенных для отображения новых форм. К счастью, разработчики корпорации Microsoft, создавшие кнопочные формы, подумали о проблеме именно такого рода и решили заставить программу Access сохранять меню кнопочной формы в БД. Вот как действует это средство. Когда создается кнопочная форма, Access добавляет в БД таблицу, названную Switchboard Items (Элементы кнопочной формы). Когда вы вводите пункты меню в кнопочную форму, программа Access вводит их в упомянутую таблицу. Для того чтобы такая система функционировала, программа должна выполнить несколько дополнительных действий. А именно, когда открывается кнопочная форма, Access выполняет макрос (см. главу 15), который извлекает список элементов кнопочной формы из таблицы и использует его для формирования набора кнопок, отображаемых на кнопочной форме. Воспользоваться этим можно следующим образом. Если после создания кнопочной формы вы решили, что хотите ее изменить, это нетрудно. Просто откройте Диспетчер кнопочных форм (выберите на ленте Работа с базами данных → Работа с базами данных → Диспетчер кнопочных форм) и затем отредактируйте элементы формы. Программа Access обновит записи в таблице Switchboard Items. Саму кнопочную форму изменять не нужно. Таким образом, если вы настроили кнопочную форму (добавив свое содержимое или собственные кнопки), она нисколько не пострадает. Обычно нет нужды открывать непосредственно таблицу Switchboard Items, следовательно, почему бы не скрыть ее в области переходов и избежать осложняющих ситуаций? В разд. "Область переходов "главы 1 написано, как это сделать. Назначение стартовой формы Взгляд на кнопочную форму как на интерфейс для вашей БД — хорошая отправная точка для пользователей, собирающихся работать с этой БД. Вы можете заставить программу Access открывать любую форму (например, кнопочную) автоматически, когда кто-нибудь в первый раз открывает БД. Вот как это делается.
На экране появятся параметры текущей БД. 3. Под заголовком Параметры приложений (Application Options) найдите поле Форма просмотра (Display Form). Выберите в списке кнопочную форму. 4. Если ваша кнопочная форма полностью исключает необходимость применения области переходов, найдите под заголовком Переходы (Navigation) и сбросьте флажок рядом с параметром Область переходов (Display Navigation Pane). Если вы боитесь, что чрезмерно усердные пользователи могут открыть то, что не следует, скройте область переходов и научите их пользоваться кнопочной формой для любых нужд. Это напоминает перемещение по БД с помощью автомобильного тренажера. Подсказка Каждый раз, когда завершается задача обработки БД, вы возвращаетесь на кнопочную форму и выбираете другую задачу (или завершаете работу в программе Access). Для облегчения этого процесса вы можете добавить на каждую создаваемую форму кнопку, которая ее закрывает, позволяя кнопочной форме снова выйти на передний план. Сделать это можно с помощью Мастера кнопок (см. разд. "Выполнение действий с помощью кнопок" главы 13). Альтернативы кнопочной формы Кнопочные формы — замечательная вещь, но они не лишены очевидных недостатков. Восьмиэлементное ограничение, слегка старомодный внешний вид и дополнительное техническое сопровождение — серьезные основания для того, чтобы дважды подумать о применении кнопочной формы, если только она не упрощает по-настоящему переходы в БД, работать с которой без такой формы существенно сложнее. Если вы не убеждены твердо в том, что кнопочная форма Access — именно то, что нужно, можно попробовать применить другие средства, описанные в следующих разделах. Пользовательские кнопочные формы Простейший и самый неотразимый вариант — построение собственной кнопочной формы вручную и затем превращение ее в стартовую форму для вашей БД. Посмотрите на форму, показанную на рис. 14.14 и отображающую те же кнопки переходов, что и кнопочная форма на рис. 14.10, но с изрядной порцией современного стилевого оформления. На этой кнопочной форме отображено чистое, ничем не занятое пространство, наряду с привлекательной графикой. Она также содержит несколько обычных элементов управления, Кнопок, созданных Мастером кнопок (см. разд. "Выполнение действий с помощью кнопок" главы 13). В свойстве всех кнопок Тип фона (Back Style) задано значение Прозрачный (Transparent), чтобы придать им более современный плоский внешний вид, В свойстве Указатель при наведении (Cursor On Hover) задано значение Указатель на гиперссылку (Hyperlink hand), так что пиктограмма указателя мыши меняется на руку с поднятым указательным пальцем, когда мышь перемещается по кнопке, и тем самым дает знать, что в этом месте можно щелкнуть кнопкой мыши. Примечание Другой вариант — использование изображения как фона для всей формы и расположение других элементов управления поверх него. Для этого нужно задать следующие свойства формы: Рисунок (имя файла с изображением, которое хотите выводить), Мозаичное заполнение (повторять вывод изображения для заполнения всего доступного пространства или нет), Выравнивание рисунка (используйте значение Сверху слева, так чтобы рисунок начинался в левом верхнем углу формы) и Масштабы рисунка (используйте значение Обрезать, тогда рисунок не растягивается, не масштабируется и не искажается никаким другим образом). Все элементы управления с фоновым рисунком, помещаемые на верхний слой формы, должны иметь значение Прозрачный в свойстве Тип фона, так чтобы сквозь них было видно изображение. Проверьте страницу "Missing CD" на Web-сайте www.missingmanuals.com, чтобы посмотреть экранный образец (интерактивное анимационное руководство), демонстрирующий создание пользовательской кнопочной формы, показанной на рис. 14.14. Pиc. 14.14. Эта пользовательская кнопочная форма — обычная форма с множеством кнопок переходов. Преимущество разработки собственной кнопочной формы заключается в том, что вы можете делать все так, как вам нравится. Недостаток в том, что потребуется больше усилий для ее обновления, если изменяется БД. При каждом добавлении новой формы придется изменять проект кнопочной формы, чтобы можно было использовать новую форму Составные формы Другой подход позволяет забыть о способе проектирования переходов от формы к форме и вместо этого создать форму, содержащую все, что вам нужно. Это средство, называемое составной формой, использует элемент управления Подчиненная форма, с которым вы познакомились в главе 13. В главе 13 рассказывалось о том, как элемент управления Подчиненная форма позволяет отображать связанные данные (такие как перечень товаров, входящих в текущую категорию товаров). Но применять подчиненную форму имеет смысл и для отображения нескольких несвязанных таблиц в одном месте. Просто оставьте пустыми свойства подчиненной формы Основные поля и Подчиненные поля — в этом случае подчиненная форма отображает все записи без фильтрации. На рис. 14.15 показан пример. Подсказка Существует метод, ускоряющий создание составной формы. Сначала выберите на ленте Создание → Формы → Конструктор форм для создания пустой новой формы. Найдите форму, которую хотите использовать в подчиненной форме, и перетащите ее мышью из области переходов на рабочую поверхность вашей новой формы. Программа Access создаст элемент управления Подчиненная форма, в котором отображается эта форма. Можно также перетащить таблицу на вашу форму, в этом случае Access создаст подчиненную форму для таблицы (и попросит выбрать для нее имя). Рис. 14.15. Эта составная форма — пульт управления "все в одном" для добавления и просмотра товаров и просмотра списка клиентов. Подготовленные и включенные в состав программы Access шаблоны часто используют составные формы для размещения нескольких связанных задач редактирования в одном месте Если в области переходов применяется режим Таблицы и связанные представления, составная форма обычно отображается в группе Несвязанные объекты, поскольку кнопочная форма сама по себе не использует никакие таблицы. Вместо этого она содержит подчиненные формы, и эти формы используют различные таблицы, которые вы выводите на экран. Отображение всех форм в списке Это последнее средство может оказаться полезным при разработке пульта управления переходами. Вместо создания кнопок для всех форм, которые хотите использовать, можно создать элемент управления Список, включающий их все. Когда пользователь, работающий с БД, выбирает форму из списка, программа Access переходит к этой форме. Такой подход очень удобен при большом количестве форм, способных сделать кнопочный метод непоправимо запутанным. Примечание Этот метод работает так же хорошо с отчетами, как и с формами. Первый шаг — включение в список имен форм. Программа Access позволяет сделать это тремя способами. ■ Ввод имен вручную. Просто поместите на форму элемент управления Поле со списком. Когда запустится мастер создания элемента управления, выберите переключатель Будет введен фиксированный набор значений и затем введите имена форм в соответствующем порядке. Примечание См. более подробную информацию о мастере создания списка в разд. "Переходы с помощью списков" главы 13. Только помните о том, что в конце работы мастера нужно выбрать вариант Запомнить значение. Ваш список применяется для переходов, а не для редактирования записей.
Первые два варианта просты. Третий — более впечатляющий, но требует немного больше работы. Обычно системные таблицы скрыты от глаз. Отобразить их можно (рис. 14.16), установив флажок Показывать системные объекты в окне Параметры переходов. Надолго оставлять их видимыми не стоит, т. к. любое изменение в них может повредить вашу БД и озадачить программу Access. Системные таблицы можно использовать и не выводя на экран. Самая интересная системная таблица — MsysObjects, в которой перечислены все объекты БД. Можно получить список всех форм вашей БД, создав запрос к этой таблице с помощью SQL-команды (см. в разд. "Режим SQL" главы 6 информацию об использовании в запросах языка SQL). Поле Name содержит имена объектов БД, поле Туре — числовой код, обозначающий тип объекта. В табл. 14.1 приведены типы, которые могут вас заинтересовать. Таблица 14.1. Коды полезных типов
Рис. 14.16. В области переходов отображается группа системных таблиц, которые обычно скрыты. Их можно открыть и просмотреть, но трудно понять смысл содержащихся в них данных (большей частью числовых) На основе этих данных можно получить список форм — извлечь поле Name, а затем отобрать записи со значением типа -32 768. Легче всего реализовать описанную логику в элементе управления Список, добавив список на форму и пропустив мастер создания списка (нажмите клавишу SELECT Name FROM MSysObjects WHERE MSysObjects.Type=-327 68 Теперь у вас есть список, отображающий все формы вашей БД. Можно заменить число -32 764 числом -32 768 и получить все отчеты. На рис. 14.17 показан результат. Итак, вы увидели только половину нужного решения. Известно как включить список в подходящий элемент управления, но при использовании этого элемента пока ничего не произойдет. Вам нужен реальный способ перехода к выбранной в списке форме или отчету. Оказывается, это решение немного сложнее примеров, виденных вами до сих пор. Для того чтобы заставить его работать, придется изменить макрос. (Макрос — это перечень нескольких инструкций, хранящийся как объект БД, который можно использовать в любое время.) Рис. 14.17. В данной форме отображен список всех доступных отчетов Как вы узнали из главы 13, в процессе создания кнопки Мастер кнопок задает несколько вопросов и затем формирует нужный макрос. Но мастер создания кнопок катастрофически ограничен функционально. К примеру, он может создать макрос, выполняющий переход к конкретной форме, и не способен создать макрос перехода к любой форме. Но вы можете создать простой макрос с помощью мастера, а затем, приложив немного дополнительных усилий, исправить его в соответствии с собственными нуждами. Вот как это делается. 1. Поместите кнопку на вашу форму. Расположите ее рядом с элементом управления Поле со списком. Запустится Мастер кнопок. 2. Выберите категорию Работа с отчетами и действие Открыть отчет, а затем щелкните мышью кнопку Далее. Если вы отображаете список форм, выберите категорию Работа с формами и действие Открыть форму.
Убедитесь, что у кнопки подходящий заголовок, например "Выполнить", "Открыть форму" или "Вывести отчет". Когда мастер завершил работу, самое время внимательнее взглянуть на кнопку в Окне свойств. 5. В Окне свойств выделите вновь созданную кнопку и перейдите на вкладку События (Event). События — это действия или явления, которые запускают ваш макрос. Например, у всех кнопок есть событие Нажатие кнопки (OnClick), которое возникает, когда вы щелкаете кнопку мышью. 6. Найдите событие Нажатие кнопки (OnClick) и щелкните мышью в поле свойства, в котором выводится строка [Внедренный макрос] ([Embedded Macro]). В углу поля появляется кнопка с многоточием (...). 7. Щелкните мышью многоточие для редактирования макроса. На экран выводится окно редактирования макроса (рис. 14.18). В нижней части окна находится раздел Аргументы макрокоманды, позволяющий корректировать работу макроса. Рис. 14.18. Вы узнаете об этом окне гораздо больше в главе 15. Сейчас вам нужно знать лишь то, что у данного макроса единственная макрокоманда (представленная одной строкой в табличной сетке). Эта макрокоманда открывает отчет (на что указывает значение ОткрытьОтчет в столбце Макрокоманда) 8. В разделе Аргументы макрокоманды найдите свойство Имя отчета (или Имя формы). Замените его значение выражением =MyList.Value. Это выражение находит поле со списком и извлекает выделенное в данный момент значение. Предполагается, что поле со списком названо My List. Если нет, измените выражение соответствующим образом. (Если вы не помните имени вашего поля со списком, выделите элемент щелчком кнопки мыши и посмотрите, какое имя выводится в раскрывающемся списке в верхней части Окна свойств.) 9. Закройте окно макроса и ответьте Да на предложение сохранить изменения. Вы вернетесь в окно Конструктора формы. 10. Перейдите в Режим формы и проверьте магические свойства вашего нового списка. У вас появится возможность выделить форму в списке и затем щелкнуть мышью кнопку для открытия выбранной формы. Ссылки на связанные данные Кнопочная форма — функциональная возможность взглянуть на БД с высоты птичьего полета. Но ваша работа на этом не закончена. Хорошо спроектированная система переходов позволяет легко переходить от одной формы к другой так, что вы можете эффективно перемещаться по всей БД. Секрет системы переходов от формы к форме заключается в продумывании рабочего потока ваших данных (порядка, в котором вы переходите от задачи к задаче в процессе работы с БД). Предположим, что у вас мебельная компания, продающая кофейные столики с ручной росписью. Что происходит, когда вы получаете новый заказ? Возможно, вы начинаете с создания или выделения информации о клиенте (в одной форме), а затем добавляете сведения о заказе этого клиента (в другой форме). Кнопочная форма не должна переходить сразу к информации о заказе. Начинать следует с формы, содержащей данные о клиенте. У этой формы должна быть кнопка (или другой элемент управления), которая позволит перейти к форме с заказами. Вы должны совершить аналогичный мыслительный процесс, создавая формы, скажем, для отдела по работе с клиентами. В этом случае им нужен способ выбора клиента и быстрого просмотра подробных сведений о выписанных счетах и выплатах клиента, информации о заказе и записей о доставках. Для этого сценария лучшим решением могло бы стать создание составной формы, собирающей все эти сведения вместе. Переход от одной формы к другой не составляет труда. Все, что нужно, — это подходящая кнопка. В следующих двух разделах подробно описаны два часто встречающихся примера. Отображение связанных записей в отдельной форме В главе 13 вы узнали, как элемент управления Подчиненная форма может отображать связанные записи в одном месте. Но подчиненные формы не всегда предоставляют достаточно места для работы. В зависимости от способа обработки и величины объема реальной информации, с которой вы сталкиваетесь, возможно, вы предпочтете отображать подчиненные записи в другом месте. Можно добавить на форму кнопку, которая раскрывает другую форму со связанными записями. Для реализации этого метода во второй форме применяется фильтрация для отображения только подчиненных записей. На рис. 14.19 и 14.20 показан пример из БД Cacophone Studios. Формы, представленные на рис. 14.19 и 14.20, можно создать без особых усилий. Немного сложнее обстоит дело с кнопкой See Students in this Class. Далее перечислено все, что нужно сделать, для реализации кнопки, открывающей вторую форму для отображения связанных записей. 1. Откройте родительскую форму. В данном случае начните с формы Classes. 2. На вкладке ленты Конструктор щелкните кнопкой мыши пиктограмму Кнопка. Нарисуйте кнопку на вашей форме. Запустится Мастер кнопок. 3. Выберите категорию Работа с формой и действие Открыть форму и щелкните мышью кнопку Далее. На следующем этапе мастер отобразит все формы в вашей БД. Рис. 14.19. Форма Classes выводит на экран список классов. Щелкните мышью кнопку See Students in this Class (просмотреть список студентов этого класса) для открытия второй формы (рис. 14.20) Рис. 14.20. Форма StudentEnrollments (список студентов) содержит студентов только одного класса 4. Выберите подчиненную форму, в которой есть связанные записи, и затем щелкните мышью кнопку Далее. В данном случае выберите форму StudentEnroIlments. 5. Выберите переключатель Открыть форму и показать все записи и затем щелкните мышью кнопку Далее. Этот пункт кажется немного странным — разве вы не собирались отображать только связанные записи из таблицы StudentEnrollments? Конечно, да. Но, к сожалению, Мастер кнопок не может помочь — в этой области у него существенная ошибка, мешающая создать правильное условие отбора. Поэтому вам придется проделать немного больше работы, определив самостоятельно условие отбора записей. 6. Введите какой-нибудь текст и выберите рисунок. Начиная с этой точки, Мастер кнопок отображает стандартные этапы, которые вам уже известны (см.разд. "Выполнение действий с помощью кнопок" главы 13). 7. Задайте имя кнопки и щелкните мышью кнопку Готово. Теперь у вас есть кнопка, открывающая нужную форму, но не задана фильтрация. Для этого необходимо изменить макрос, который использует данная кнопка. Примечание Макрос — это список действий, которые вы хотите заставить выполнить программу Access. В следующей главе будут подробно рассмотрены макросы. А сейчас у вас достаточно знаний для создания нужной вам кнопки.
10. В Окне свойств выберите вкладку События и щелкните кнопкой мыши поле Нажатие кнопки (OnClick). Вы увидите в нем текст [Внедренный макрос], свидетельствующий о том, что к данному событию присоединен макрос. 11. Щелкните мышью кнопку с многоточием для открытия окна редактирования макроса. Появится новая вкладка, на которой перечислены по порядку все макрокоманды, выполняемые макросом. Вы познакомитесь с этим окном в главе 15. Сейчас нужно внести только два простых изменения. 12. В начале списка вы увидите макрокоманду ОткрытьФорму. (Она открывает подчиненную форму при щелчке мышью кнопки.) Выделите ее, щелкнув кнопкой мыши (рис. 14.21). Когда в макросе выбрана макрокоманда, в разделе Аргументы макрокоманды, расположенном в нижней части окна, появляется набор сведений о ней. 13. Щелкните кнопкой мыши поле Условие отбора (в нижней части окна, в разделе Аргументы макрокоманды) и затем введите ваше выражение для фильтрации записей. Это условие отбора должно выбрать связанные записи. В данном примере это означает, что вас интересуют записи, у которых текущий код класса. Далее приведено нужное вам условие отбора: [ClassID]=[Forms]![Classes]![ID] Рис. 14.21. Выражение для фильтрации следует поместить в поле Условие отбора Это выражение сообщает программе Access о том, что необходимо отображать запись, только если значение поля ClassID в форме StudentEnrollments совпадает со значением поля ID в форме Classes. Другими словами, вы получите список студентов, зачисленных в текущий класс. Примечание Странные восклицательные знаки в выражении для фильтрации позволяют связать две формы. Условие отбора задается в форме, которую вы открываете (форма StudentEnrollments) и у которой есть поле ClassID. Но вы должны сократить число отображаемых ею записей на основе поля ID, хранящегося в другой форме (Classes). Синтаксическая запись [Forms] ! [Classes] ! [ID] — просто замысловатый способ сказать программе Access о том, что искать нужное ей значение ID следует в открытой в данный момент форме с именем Classes. 14. Изменение, сделанное в предыдущем пункте, почти завершает корректировку макроса, Но хорошо бы добавить еще одну макрокоманду. Щелкните кнопкой мыши поле, расположенное под макрокомандой ОткрытьФорму, и введите Обновление (Requery) (рис. 14.22). Данная команда заставляет программу Access обновить текущую форму (форму StudentEnrollments, которую вы только что открыли). Этот шаг необходим, поскольку форма StudentEnrollments могла быть уже открыта, когда вы щелкнули мышью кнопку See Students in this Class. Если так и было, в вашем макросе изменился фильтр, но он не выполнил фильтрацию. Для обновления отображаемых записей необходимо выполнить команду Обновление и заставить форму обновить саму себя. Рис. 14.22. Макрокоманда Обновление обновляет отображение текущей формы. Ей не нужны никакие дополнительные данные 15. Теперь работа завершена. Закройте вкладку с макросом и щелкните мышью кнопку Да в ответ на предложение программы Access сохранить макрос. У вас появилась замечательная кнопка перехода, которая отображает связанную форму и ограничивает ее лишь теми записями, которые вас интересуют. В следующей главе вы узнаете гораздо больше о тонкой настройке макросов. Для испытания вашей кнопки перейдите в Режим формы и щелкните кнопку мышью. Когда вы щелкните мышью кнопку See Students in this Class и откроется форма StudentEnrollments, сработает заданное условие отбора записей. Подсказка Любой пользователь может удалить ваше условие отбора с помощью группы ленты Главная → Сортировка и фильтр (или щелкнув мышью поле С фильтром (Filtered), которая выводится в нижней части формы, рядом с кнопками перехода). Если вам не нужна такая гибкость настройки, можно настроить форму StudentEnroIIments так, что она никому не позволит изменять свои параметры фильтрации. Для этого откройте форму в режиме Конструктора, выделите элемент Форма в списке Окна свойств и измените значение свойства Применение фильтров с Да на Нет. Отображение более подробных отчетов с помощью связей Для обеспечения переходов между отчетами можно использовать аналогичный метод. При желании можно сформировать возможность перехода из одного отчета в другой, подчиненный Макрос, который нужно создать, почти идентичен тому, который мы рассматривали в предыдущем примере. Как правило, специалисты Access применяют этот метод для запуска основного отчета и предоставляют возможность пользователям щелчками кнопки мыши проложить путь к более подробному отчету, который акцентирует внимание на части данных (рис. 14.23 и 14.24). Рис. 14.23. Первый отчет (TotalsByCustomer) (общая стоимость заказов клиента) отображает всех клиентов и общую стоимость заказов для каждого из них. Щелкните кнопкой мыши одного из клиентов, и программа Access запустит вывод более подробного отчета, показанного на рис. 14.24 Примечание Отчеты проектируются для вывода на печатающие устройства. Поэтому большие серые кнопки выглядят несколько неуместно. Другое решение — ссылки — как показано в данном примере, гораздо более распространено, поскольку отображает данные, которые нужно распечатать, и в то же время добавляет интерактивность. Для создания такого перехода необходимо начать с создания поля ввода, которое выглядит как гиперссылка. (Настоящий элемент управления Гиперссылка использовать нельзя, поскольку он отображает только фиксированный, неменяющийся текст. Вместо этого нужен способ отображения содержимого поля как ссылки — в данном примере код клиента.) Затем можно создать макрос, который запускается при щелчке кнопкой мыши поля для перехода к новому отчету. Задача этого макроса — открыть подробный отчет, который вам нужен, и затем применить фильтр для отображения только связанных записей. Отформатировать поле ввода легко. Можно выделить любой элемент управления и затем изменить его цвет, шрифт и т. д. с помощью команд на ленте. Но вам даже не нужно выполнять эту работу. У каждого поля есть странное свойство, названное Гиперссылка (Is Hyperlink), — задайте для него значение Да, и элемент управления Поле превратится в подчеркнутый текст синего цвета, что вам и нужно Рис. 14.24. Представленный отчет CustomerPurchases отражает привычки выбранного клиента тратить деньги. Выражение построения текстовой строки (="Products Purchased By " & [FirstName] & " " & [LastName]) помещает имя и фамилию текущего клиента в заголовок формы После того как вы справились с описанной странностью, самое время добавить необходимый макрос. Можно предпринять следующие действия с БД Boutique Fudge (включена в загружаемое из Интернета содержимое примеров для данной главы) для вставки ссылки, открывающей отчет CustomerPurchases (покупки клиента) в отчете TotalsByCustomer (общая стоимость заказов клиента).
Обычно применяется уникальное значение кода (ID), связывающее две таблицы друг с другом. В данном примере используется поле ID, хранящее идентификатор клиента. Если вы его еще не отформатировали, сделайте это сейчас с помощью свойства Гиперссылка так, чтобы поле выглядело как ссылка. Теперь следует создать и присоединить макрос. 4. В Окне свойств перейдите на вкладку События и щелкните кнопкой мыши поле Нажатие кнопки (OnClick). Щелкните мышью кнопку с многоточием (...) На экране появляется диалоговое окно Построитель (Choose Builder) и запрашивает способ создания кода, который будет выполняться, когда ссылку щелкают кнопкой мыши.
Вы также можете выбрать макрокоманду ОткрытьФорму для открытия формы (для редактирования записей), когда ссылку щелкают кнопкой мыши. 7. В разделе Аргументы макрокоманды измените свойство Имя отчета, задайте имя отчета, который хотите использовать. В данном примере это CustomerPurchases. 8. Теперь необходимо задать свойство Условие отбора (Where Condition) для применения фильтра. Он должен отбирать клиентов, соответствующих значению ID в текущей записи. Нужное вам выражение очень похоже на то, которое использовалось в примере с формами. Необходимо выбрать верное поле в отчете, который открыли (поле CustomerlD в отчете CustomerPurchases), и затем сравнить его с полем, которое вы щелкнули кнопкой мыши (поле ID в отчете TotalsByCustomers). Далее приведено нужное выражение: [CustomerlD]=[Reports]![TotalsByCustomer]![ID] Как и в примере с формами, это выражение использует замысловатый синтаксис с восклицательными знаками, чтобы сообщить программе Access о том, как найти отчет TotalsByCustomers. 9. Под макрокомандой ОткрытьОтчет введите Обновление. Как и в примере с формами, следует обновить отчет так, чтобы отбор сработал, даже если отчет уже открыт.
Теперь можно щелкнуть ссылку кнопкой мыши и углубиться в более подробный отчет. Вы можете проверить этот пример самостоятельно, воспользовавшись тренировочными БД для данной главы. Часть V Программирование в Access |