Создание и использование подчиненных отчетов

При работе с реляционными данными (связанными данными, хранящимися в разных таблицах) часто возникает необходимость включать в отчет сведения из нескольких таблиц или запросов одновременно. Например, если нужно просмотреть сведения о клиентах вместе с данными об их заказах. В таком случае полезно использовать подчиненный отчет, поскольку он позволит вывести в отчете одновременно данные по заказам и сведения о клиентах, организованные логичным и наглядным образом. В Microsoft Office Access 2007 доступны несколько способов быстрого создания подчиненных отчетов.

Выберите действие

Общие сведения о подчиненных отчетах

Создание подчиненного отчета

Внесение изменений в макет подчиненного отчета

Общие сведения о подчиненных отчетах

Подчиненным отчетом называют отчет, вставленный в другой отчет. При комбинировании отчетов один из них является главным и включает в себя другой отчет. Главный отчет может быть присоединенным или свободным. Присоединенным отчетом считается отчет, в котором отображаются данные и в свойстве которого Источник записей содержится указание на таблицу, запрос или инструкция (строка) SQL. Свободный отчет — это отчет, не основанный на таблице, запросе или инструкции SQL (другими словами, в поле свойства Источник записей такого отчета отсутствует значение).

Пример свободного главного отчета с двумя несвязанными подчиненными отчетами    

В свободном главном отчете не могут отображаться непосредственно данные базовых объектов, однако он может выступать в качестве главного отчета для несвязанных подчиненных отчетов, которые нужно объединить.

Свободный главный отчет с двумя подчиненными отчетами, отображающий несвязанные данные

1. Свободный главный отчет содержит два подчиненных отчета.

2. В первом подчиненном отчете выводятся сводки продаж по сотрудникам.

3. Во втором подчиненном отчете выводятся сводки продаж по категориям.

Пример главного и подчиненного отчетов, присоединенных к одному источнику записей    

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

Главный отчет и подчиненный отчет, присоединенные к одному источнику записей

1. В подчиненном отчете выводятся суммы продаж за квартал.

2. В главном отчете показаны продажи за каждый из дней.

Пример главного и подчиненного отчетов, которые присоединены к одному источнику записей    

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

Главный отчет и два подчиненных отчета, отображающие связанные данные

1. В главном отчете перечисляются названия ярмарок и места их проведения.

2. В подчиненном отчете перечислены представители, которые будут участвовать в каждом из мероприятий.

Подчиненные формы в отчете

Наряду с подчиненными отчетами главный отчет может включать также подчиненная форма, причем число подчиненных форм и подчиненных отчетов не ограничивается. Более того, главный отчет может содержать подчиненные формы или отчеты семи уровней. Например, в отчете может содержаться подчиненный отчет, который в свою очередь содержит подчиненную форму или подчиненный отчет и так далее до седьмого уровня.

Если добавить подчиненную форму в отчет, а затем открыть этот отчет в режиме «Отчет», с помощью данной формы можно фильтровать записи и перемещаться по ним. Программы на языке Visual Basic для приложений (VBA) и встроенные макросы, присоединенные к форме и ее элементам управления, останутся доступны, хотя некоторые события в данном контексте отключаются. С использованием подчиненной формы в отчете нельзя выполнять добавление, изменение или удаление записей.

Указание связи с подчиненной формой или подчиненным отчетом

При включении в главный отчет подчиненной формы или подчиненного отчета с данными, связанными с данными в главном отчете, необходимо установить связь подчиненного отчета с главным. Связь обеспечивает соответствие записей, выводящихся в подчиненном отчете или подчиненной форме, записям в главном отчете.

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

  • Определены отношение для выбранных таблиц или связи для таблиц, являющихся базовыми по отношению к выбранным запросам.

    Дополнительные сведения о создании связей см. по ссылкам в разделе См. также.

  • Главный отчет основан на таблице с первичный ключ, а подчиненный отчет или подчиненная форма — на таблице, содержащей поле с именем этого первичного ключа и с таким же или совместимым тип данных. Например, если первичный ключ базовой таблицы главного отчета имеет тип данных «Счетчик», а его свойство FieldSize имеет значение Длинное целое, то соответствующее поле в базовой таблице подчиненной формы или подчиненного отчета должно иметь тип данных «Числовой» со свойством FieldSize, имеющим значение Длинное целое. При выборе запроса или запросов в качестве источника записей для подчиненной формы или подчиненного отчета базовые таблицы этих запросов должны отвечать тем же условиям.

В начало страницы

Создание подчиненного отчета

Если подчиненный отчет будет связан с главным отчетом, то перед выполнением следующей процедуры убедитесь, что базовые источник записей были отношение. Дополнительные сведения о создании связей см. по ссылкам в разделе См. также.

Для создания подчиненного отчета воспользуйтесь мастером создания подчиненных отчетов

  1. Откройте отчет, который должен использоваться в качестве главного отчета, в Конструктор.

  2. Убедитесь, что на вкладке Конструктор в группе Элементы управления установлен флажок Использовать мастер Изображение кнопки . Значок кнопки

  3. На вкладке Структура в группе Элементы управления нажмите кнопку Подчиненная форма/отчет Значок кнопки .

  4. Выберите в отчете место, в которое нужно поместить подчиненный отчет.

  5. Если нужно создать новую подчиненную форму или новый подчиненный отчет, основанный на таблице или запросе, на первой странице мастера создания подчиненных отчетов выберите параметр Имеющиеся таблицы и запросы. Если в качестве подчиненного отчета будет использоваться существующий отчет или существующая форма, выберите Имеющиеся отчеты и формы, выберите в списке форму или отчет, а затем нажмите кнопку Далее.

    Выбор источника данных в мастере создания подчиненных отчетов

  6. Если на предыдущей странице мастера выбран параметр Существующие отчеты или формы, пропустите этот шаг и перейдите непосредственно к шагу 7. В ином случае в списке Таблицы, запросы выберите таблицу или запрос с полями, которые требуется включить в подчиненный отчет, а затем дважды щелкните нужные поля в списке Доступные поля, чтобы добавить их в подчиненный отчет.

    Выбор полей в мастере создания подчиненных отчетов

    Если планируется связать подчиненный отчет с главным отчетом, убедитесь, что включены одно или несколько полей, которые будут использоваться для создания данной связи, даже если они не должны отображаться. Как правило, связывающим полем является поле кода. На предыдущем рисунке источником записей для подчиненного отчета является таблица «Заказы», а источником записей для главного отчета - таблица «Клиенты». Поскольку таблица «Заказы» связана с таблицей «Клиенты» по полю «ИД клиента», это поле добавлено в список Выбранные поля.

    Примечание : В подчиненный отчет можно включить поля из нескольких таблиц и запросов. Завершив добавление полей из одной таблицы, выберите следующую таблицу или запрос в списке Таблицы, запросы, а затем добавьте нужные поля.

    Нажмите кнопку Далее, чтобы продолжить.

  7. На этой странице мастера определяется способ связывания подчиненного отчета с основным отчетом. Если в Access будут обнаружены поля, которые могут использоваться для связывания подчиненного отчета с главным отчетом, в мастере выводится список предложений по созданию связи.

    В мастере создания подчиненных отчетов предлагаются поля для создания связи

    Можно выбрать предложения, которые лучше прочих подходят в данной ситуации либо, если связь подчиненного отчета с главным отчетом не нужна, выбрать параметр Нет. Если требуется установить связь между подчиненным отчетом и главным отчетом, но ни одно из предложений не кажется подходящим, выберите параметр Самостоятельное определение.

    Примечание : Если мастеру не удается найти подходящие поля для создания связи, список предложений не выводится и автоматически выбирается параметр Самостоятельное определение.

    Определение собственных связей в мастере создания подчиненных отчетов

    Если выбран параметр Самостоятельное определение, в мастере отображается два набора списков.

    • В разделе Поля формы или отчета выберите одно или несколько полей главного отчета, которые будут использоваться для связи главного отчета с подчиненным отчетом или подчиненной формой. Можно выбрать до трех полей, каждое выбранное поле должно соответствовать связанному полю источника данных подчиненной формы или подчиненного отчета.

    • В разделе Поля подчиненной формы или отчета выберите соответствующие поля в подчиненной форме или подчиненном отчете, которые будут связаны с выбранными полями главного отчета.

    • Чтобы не устанавливать связь подчиненного отчета с главным отчетом, оставьте все поля списков незаполненными.

      Нажмите кнопку Далее, чтобы продолжить работу.

  8. На последней странице мастера введите имя подчиненной формы или подчиненного отчета либо просто нажмите кнопку Готово, чтобы принять значение по умолчанию.

    Добавление имени в мастере создания подчиненных отчетов

В отчет автоматически добавляется подчиненные форма/отчет, который привязывается (путем настройки свойства Объект-источник) следующим образом:

  • Если на первой странице мастера был выбран параметр Существующие отчеты или формы, Access привязывает элемент подчиненного отчета к указанному отчету или форме.

  • Если на первой странице мастера был выбран параметр Имеющиеся таблицы и запросы, Access создает новый объект отчета в области переходов, а затем привязывает к нему элемент подчиненного отчета. В качестве имени нового объекта отчета используется имя, введенное на последней странице мастера.

Добавление в отчет таблицы, запроса или отчета в качестве подчиненного отчета

Чтобы быстро добавить подчиненный отчет в отчет, откройте главный отчет в режиме конструктора и перетащите в него объект из области переходов. Если нужно связать подчиненную форму или подчиненный отчет с главным отчетом, убедитесь, что базовые источник записей являются отношение и что они содержат поля, которые будут использоваться для связи подчиненного отчета или подчиненной формы с главным отчетом. Дополнительные сведения о создании связей см. по ссылкам в разделе См. также.

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

  2. Перетащите таблицу, запрос, форму или другой отчет из области переходов в раздел основного отчета, где нужно вывести подчиненный отчет.

В Access будет выполнено одно из следующих действий:

  • Если можно определить, как связать два объекта, Access добавляет в отчет элемент подчиненного отчета. При добавлении формы или отчета Access привязывает элемент подчиненного отчета к этому объекту. При добавлении таблицы или запроса Access сначала создает объект отчета, а затем привязывает элемент подчиненного отчета к этому новому объекту.

  • Если Access не может определить, как должна быть установлена связь между двумя объектами, открывается мастер создания подчиненного отчета. Для продолжения работы выполните процедуру, приведенную в разделе Создание подчиненного отчета, начиная с шага 7.

    После завершения работы мастера Access добавляет в данный отчет подчиненный отчет.

Чтобы убедиться, что подчиненная форма или подчиненный отчет связаны с главным отчетом должным образом, выполните следующую процедуру.

  1. Выделите элемент подчиненного отчета, щелкнув его.

  2. Если окно свойств не было открыто, нажмите клавишу F4, чтобы открыть его.

  3. На вкладке Данные окна свойств изучите свойства Основные поля и Подчиненные поля.

    • Если связь подчиненного отчета или подчиненной формы отсутствует, оба этих свойства не должны иметь значения.

    • В подчиненной форме или подчиненном отчете с установленной связью в свойствах Основные поля и Подчиненные поля должны отображаться одно или несколько полей, связывающих два объекта. Например, если в главном отчете отображаются сведения из таблицы «Сотрудники», а в подчиненной форме или подчиненном отчете — сведения из таблицы «Заказы», в свойстве Основные поля должно быть указано поле «Код» из таблицы «Сотрудники», а в поле Подчиненные поля — поле «Код сотрудника» из таблицы «Заказы».

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

  1. На вкладке Данные окна свойств откройте окно свойства Основные поля, а затем нажмите кнопку Кнопка "Построитель" .

    Откроется диалоговое окно Связь с полями подчиненного отчета.

    Диалоговое окно «Связь с полями подчиненного отчета»

  2. В списках Основные поля и Подчиненные поля выберите поля, по которым должна быть установлена связь между отчетами. Если вы не уверены, какое поле следует использовать, нажмите кнопку Предложить, в результате чего Access попытается определить поля связи. По завершении работы нажмите кнопку ОК.

    Если поле, которое необходимо использовать для связи отчета, не отображается, нужно изменить источник записей главного отчета, подчиненной формы или подчиненного отчета таким образом, чтобы новый источник записей содержал поле связи. Например, если отчет основан на запросе, следует удостовериться, что поле связи присутствует в результатах запроса.

  3. Сохраните главный отчет, переключитесь в режим отчета и убедитесь, что результаты работы отчета соответствуют ожиданиям.

Добавление в отчет таблицы или запроса в качестве таблицы

Таблица является простым визуальным представлением данных, идентичным электронной таблице. Столбцы таблицы отражают поля в исходной таблице или запросе, а строки — записи. Чтобы вывести таблицу в отчете, можно использовать элемент «Подчиненная форма/отчет». Этот способ хорошо подходит для ситуаций, когда нужно сжатое отображение данных и не требуются возможности форматирования, доступные для объекта формы или отчета. Чтобы добавить таблицу в отчет, выполните следующие действия:

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

  2. Убедитесь, что на вкладке Конструктор в группе Элементы управления установлен флажок Использовать мастера. Значок кнопки

  3. На вкладке Структура в группе Элементы управления нажмите кнопку Подчиненная форма/отчет Значок кнопки .

  4. Выберите в отчете место, в которое нужно поместить подчиненный отчет.

  5. Если откроется мастер создания подчиненных отчетов, нажмите кнопку Отмена, чтобы закрыть этот мастер.

  6. Если окно свойств не было открыто, нажмите клавишу F4, чтобы открыть его.

  7. В отчете выберите новый элемент подчиненного отчета.

  8. На вкладке Данные окна свойств щелкните стрелку в окне свойства Объект-источник, а затем щелкните таблицу или запрос, который нужно отобразить в элементе подчиненного отчета. Например, чтобы вывести таблицу «Заказы», щелкните Table.Orders.

    Access предпримет попытку связать таблицу с главным отчетом на основе связей, определенных в базе данных.

  9. На вкладке Данные окна свойств изучите свойства Основные поля и Подчиненные поля.

    • Если у таблицы отсутствует связь, убедитесь, что оба эти свойства не имеют значений.

    • В таблице с установленной связью в свойствах Основные поля и Подчиненные поля должны отображаться одно или несколько полей, связывающих эту таблицу с главным отчетом. Например, если в главном отчете отображаются сведения из таблицы «Сотрудники», а в таблице — сведения из таблицы «Заказы», в свойстве Основные поля должно быть указано поле «Код» из таблицы «Сотрудники», а в поле Подчиненные поля — поле «Код сотрудника» из таблицы «Заказы».

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

  1. На вкладке Данные окна свойств откройте окно свойства Основные поля, а затем нажмите кнопку Кнопка "Построитель" .

    Откроется диалоговое окно Связь с полями подчиненного отчета.

    Диалоговое окно «Связь с полями подчиненного отчета»

  2. В списках Основные поля и Подчиненные поля выберите поля, по которым должна быть установлена связь главного отчета с таблицей. Если вы не уверены, какое поле следует использовать, нажмите кнопку Предложить, в результате чего Access попытается определить поля связи. По завершении работы нажмите кнопку ОК.

    Если поле, которое необходимо использовать для связи, не отображается, нужно изменить источник записей главного отчета или таблицы таким образом, чтобы новый источник записей содержал поле связи. Например, если таблица основана на запросе, следует удостовериться, что поле связи присутствует в результатах этого запроса.

  3. Сохраните главный отчет, переключитесь в режим отчета и убедитесь, что результаты работы отчета соответствуют ожидаемым результатам.

В начало страницы

Внесение изменений в макет подчиненного отчета

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

Открывание подчиненной формы или подчиненного отчета в новом окне в режиме конструктора

Чтобы внести изменения в подчиненную форму или подчиненный отчет при работе с главным отчетом в режиме конструктора, можно открыть подчиненную форму или подчиненный отчет в отдельном окне.

  1. Выберите подчиненную форму или подчиненный отчет.

  2. На вкладке Структура в группе Элементы щелкните Подчиненный отчет в новом окне Значок кнопки .

Примечание : Эта команда недоступна, если подчиненная форма или подчиненный отчет привязаны к таблице или запросу.

Вывод итогового значения подчиненного отчета в главном отчете

Предположим, используется подчиненный отчет с именем «Заказы», содержащий текстовое поле с именем «Итог - цена доставки», в котором вычисляется сумма по столбцу «Цена доставки». Чтобы отобразить сумму из подчиненного отчета в главном отчете, необходимо добавить в главный отчет текстовое поле, а затем с помощью выражения сделать отсылку на текстовое поле подчиненного отчета «Итог - цена доставки». Для этого выполните следующую процедуру.

  1. Щелкните правой кнопкой мыши главный отчет в области переходов и выберите в контекстном меню команду Конструктор.

  2. На вкладке Конструктор в группе Элементы управления щелкните Поле. Значок кнопки

  3. В главном отчете щелкните место, где будет размещено новое текстовое поле.

  4. Если окно свойств не было открыто, нажмите клавишу F4, чтобы открыть его.

  5. На вкладке Данные окна свойств в окне свойства Данные введите следующее ниже выражение.

    =IIf(IsError([Orders subreport].[Report]![Shipping Fee Total]),0,[Orders subreport].[Report]![Shipping Fee Total])

    Примечания : 

    • В этом примере можно использовать более простое выражение =[Orders subreport].[Report]![Shipping Fee Total], однако в данном случае при отсутствии данных в подчиненном отчете в элементе управления в главном отчете будет выведено #Ошибка. Использование функции IsError в составе функции IIf (это показано в первом выражении) гарантирует, что в текстовом поле главного отчета будет выведен ноль (0), если подчиненный отчет не содержит никаких данных.

    • Выражение можно создать с использованием построителя выражений, для чего нужно нажать кнопку Кнопка "Построитель" в окне свойства Данные.

  6. На вкладке Формат окна свойств задайте для свойства Формат соответствующее значение (в данном случае значение Валюта).

  7. Сохраните отчет, переключитесь в режим отчета и убедитесь, что вычисление выдает ожидаемый результат.

В начало страницы

Совершенствование навыков
Перейти к обучению
Первоочередный доступ к новым возможностям
Присоединиться к программе предварительной оценки Office

Были ли сведения полезными?

Спасибо за ваш отзыв!

Благодарим за отзыв! Возможно, будет полезно связать вас с одним из наших специалистов службы поддержки Office.

×