Отображение более подробных отчетов с помощью связей
Для обеспечения переходов между отчетами можно использовать аналогичный метод. При желании можно сформировать возможность перехода из одного отчета в другой, подчиненный
Макрос, который нужно создать, почти идентичен тому, который мы рассматривали в предыдущем примере.
Как правило, специалисты 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) и запрашивает способ создания кода, который будет выполняться, когда ссылку щелкают кнопкой мыши.
5. Выберите Макросы(Macro Builder) и затем щелкните мышью кнопку ОК.
На экране появится окно редактирования макроса.
6. В первой строке, в столбце Макрокомандащелкните кнопкой мыши направленную
вниз стрелку. Выберите команду ОткрытьОтчет.
Вы также можете выбрать макрокоманду ОткрытьФормудля открытия формы (для редактирования записей), когда ссылку щелкают кнопкой мыши.
7. В разделе Аргументы макрокомандыизмените свойство Имяотчета, задайте имя отчета, который хотите использовать.
В данном примере это CustomerPurchases.
8. Теперь необходимо задать свойство Условие отбора(Where Condition) для применения фильтра. Он должен отбирать клиентов, соответствующих значению ID в текущей записи.
Нужное вам выражение очень похоже на то, которое использовалось в примере с формами. Необходимо выбрать верное поле в отчете, который открыли (поле CustomerlDв отчете CustomerPurchases),и затем сравнить его с полем, которое вы щелкнули кнопкой мыши (поле ID в отчете TotalsByCustomers).Далее приведено нужное выражение:
[CustomerlD]=[Reports]![TotalsByCustomer]![ID]
Как и в примере с формами, это выражение использует замысловатый синтаксис с восклицательными знаками, чтобы сообщить программе Access о том, как найти отчет TotalsByCustomers.
9. Под макрокомандой ОткрытьОтчетвведите Обновление.
Как и в примере с формами, следует обновить отчет так, чтобы отбор сработал, даже если отчет уже открыт.
10. Закройте окно макроса и ответьте Да на предложение сохранить изменения.
Вы вернетесь в окно Конструктораотчетов.
11. Перейдите в режим Представление отчетаи опробуйте ссылку.
Теперь можно щелкнуть ссылку кнопкой мыши и углубиться в более подробный отчет.
Вы можете проверить этот пример самостоятельно, воспользовавшись тренировочными БД для данной главы.
Часть V
Программирование в Access