Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Access_2007.doc
Скачиваний:
257
Добавлен:
17.03.2015
Размер:
20.6 Mб
Скачать

На профессиональном уровне. Кнопочные формы с несколькими страницами

В каждый момент времени кнопочная форма отображает одну страницу с командами меню. Когда такая форма создается впервые, у нее всего одна страница. Но вы можете легко добавить дополнительные в окне Диспетчера кнопочных форм (см. рис. 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 открывать любую форму (например, кнопочную) автоматически, когда кто-нибудь в первый раз открывает БД. Вот как это делается.

  1. Выберите последовательность Office → Параметры Access (Office Access Options). На экране откроется окно Параметры Access.

  2. В списке слева щелкните кнопкой мыши категорию Текущая база данных (Current Database).

На экране появятся параметры текущей БД.

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. Только помните о том, что в конце работы мастера нужно выбрать вариант За­помнить значение. Ваш список применяется для переходов, а не для редактирования записей.

  • Извлечение имен из пользовательской таблицы, созданной вами. Создайте новую таблицу и заполните ее именами форм, которые хотите включить в список. Затем в процессе создания Поля со списком выберите переключатель Объект "поле со списком" будет использовать значения из таблицы или запроса и задайте вашу пользовательскую таблицу. Этот метод концептуально подобен методу функционирования кнопочной формы, создаваемой программой Access.

  • Извлечение имен из системной таблицы. В качестве действительно эффективного средства можно получить полный список форм прямо из вашей БД без дополнительных усилий. Суть в использовании одной из скрытых системных таблиц. Системные таблицы — это таблицы, которые программа Access применяет для отслеживания объектов БД. У каждой БД, созданной Access, есть такие таблицы, скрытые от глаз.

Первые два варианта просты. Третий — более впечатляющий, но требует немного больше работы. Обычно системные таблицы скрыты от глаз. Отобразить их можно (рис. 14.16), ус­тановив флажок Показывать системные объекты в окне Параметры переходов. Надолго оставлять их видимыми не стоит, т. к. любое изменение в них может повредить вашу БД и озадачить программу Access.

Системные таблицы можно использовать и не выводя на экран. Самая интересная сис­темная таблица — MsysObjects, в которой перечислены все объекты БД. Можно получить список всех форм вашей БД, создав запрос к этой таблице с помощью SQL-команды (см. в разд. "Режим SQL" главы 6 информацию об использовании в запросах языка SQL). Поле Name содержит имена объектов БД, поле Туре — числовой код, обозначающий тип объекта. В табл. 14.1 приведены типы, которые могут вас заинтересовать.

Таблица 14.1. Коды полезных типов

Объект

Тип

Объект

Тип

Таблица (Table)

1

Форма (Form)

-32 768

Запрос (Query)

5

Отчет (Report)

-32 764

Рис. 14.16.В области переходов отображается группа системных таблиц, которые обычно скрыты. Их можно открыть и просмотреть, но трудно понять смысл содержащихся в них данных (большей частью числовых)

На основе этих данных можно получить список форм — извлечь поле Name, а затем ото­брать записи со значением типа -32 768.

Легче всего реализовать описанную логику в элементе управления Список, добавив спи­сок на форму и пропустив мастер создания списка (нажмите клавишу <Esc>, когда мастер запустится). Затем элемент управления можно настроить с помощью Окна свойств. На вкладке Данные найдите свойство Источник строк и введите следующую SQL-команду, которая выполнит нужный запрос:

SELECT Name FROM MSysObjects WHERE MSysObjects.Type=-327 68

Теперь у вас есть список, отображающий все формы вашей БД. Можно заменить число -32 764 числом -32 768 и получить все отчеты. На рис. 14.17 показан результат.

Итак, вы увидели только половину нужного решения. Известно как включить список в подходящий элемент управления, но при использовании этого элемента пока ничего не про­изойдет. Вам нужен реальный способ перехода к выбранной в списке форме или отчету.

Оказывается, это решение немного сложнее примеров, виденных вами до сих пор. Для того чтобы заставить его работать, придется изменить макрос. (Макрос — это перечень не­скольких инструкций, хранящийся как объект БД, который можно использовать в любое время.)

Рис. 14.17. В данной форме отображен список всех доступных отчетов

Как вы узнали из главы 13, в процессе создания кнопки Мастер кнопок задает несколько вопросов и затем формирует нужный макрос. Но мастер создания кнопок катастрофически ограничен функционально. К примеру, он может создать макрос, выполняющий переход к конкретной форме, и не способен создать макрос перехода к любой форме. Но вы можете создать простой макрос с помощью мастера, а затем, приложив немного дополнительных усилий, исправить его в соответствии с собственными нуждами. Вот как это делается.

1. Поместите кнопку на вашу форму.

Расположите ее рядом с элементом управления Поле со списком. Запустится Мастер кнопок.

2. Выберите категорию Работа с отчетами и действие Открыть отчет, а затем щелкните мышью кнопку Далее.

Если вы отображаете список форм, выберите категорию Работа с формами и действие Открыть форму.

  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. В следующей главе будут подробно рассмотрены макросы. А сейчас у вас достаточно знаний для создания нужной вам кнопки.

  1. Если на экране нет Окна свойств, выберите на ленте Инструменты конструктора форм | Конструктор Сервис Страница свойств (Form Design Tools | Design Tools Property Sheet).

  2. Выделите кнопку, щелкнув ее мышью на рабочей поверхности формы. Ее также можно выбрать из списка в верхней части Окна свойств.

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 (общая стоимость заказов клиента).

  1. Откройте отчет, который хотите использовать, в режиме Конструктора. В данном примере все начинается с формы Totals By Customer.

  2. Если на экране не видно Окна свойств, выберите на ленте Инструменты конструктора отчетов | Конструктор → Сервис → Страница свойств (Report Design Tools | Design Tools Property Sheet).

  3. Решите, какое поле хотите использовать для создания ссылки, и выделите его.

Обычно применяется уникальное значение кода (ID), связывающее две таблицы друг с другом. В данном примере используется поле ID, хранящее идентификатор клиента. Ес­ли вы его еще не отформатировали, сделайте это сейчас с помощью свойства Гиперссыл­ка так, чтобы поле выглядело как ссылка.

Теперь следует создать и присоединить макрос.

4. В Окне свойств перейдите на вкладку События и щелкните кнопкой мыши поле Нажа­тие кнопки (OnClick). Щелкните мышью кнопку с многоточием (...)

На экране появляется диалоговое окно Построитель (Choose Builder) и запрашивает спо­соб создания кода, который будет выполняться, когда ссылку щелкают кнопкой мыши.

  1. Выберите Макросы (Macro Builder) и затем щелкните мышью кнопку ОК. На экране появится окно редактирования макроса.

  2. В первой строке, в столбце Макрокоманда щелкните кнопкой мыши направленную вниз стрелку. Выберите команду ОткрытьОтчет.

Вы также можете выбрать макрокоманду ОткрытьФорму для открытия формы (для редактирования записей), когда ссылку щелкают кнопкой мыши.

7. В разделе Аргументы макрокоманды измените свойство Имя отчета, задайте имя отчета, который хотите использовать.

В данном примере это CustomerPurchases.

8. Теперь необходимо задать свойство Условие отбора (Where Condition) для применения фильтра. Он должен отбирать клиентов, соответствующих значению ID в текущей записи.

Нужное вам выражение очень похоже на то, которое использовалось в примере с фор­мами. Необходимо выбрать верное поле в отчете, который открыли (поле CustomerlD в отчете CustomerPurchases), и затем сравнить его с полем, которое вы щелкнули кноп­кой мыши (поле ID в отчете TotalsByCustomers). Далее приведено нужное выражение:

[CustomerlD]=[Reports]![TotalsByCustomer]![ID]

Как и в примере с формами, это выражение использует замысловатый синтаксис с вос­клицательными знаками, чтобы сообщить программе Access о том, как найти отчет TotalsByCustomers.

9. Под макрокомандой ОткрытьОтчет введите Обновление.

Как и в примере с формами, следует обновить отчет так, чтобы отбор сработал, даже ес­ли отчет уже открыт.

  1. Закройте окно макроса и ответьте Да на предложение сохранить изменения. Вы вернетесь в окно Конструктора отчетов.

  2. Перейдите в режим Представление отчета и опробуйте ссылку.

Теперь можно щелкнуть ссылку кнопкой мыши и углубиться в более подробный отчет.

Вы можете проверить этот пример самостоятельно, воспользовавшись тренировочными БД для данной главы.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]