Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

3_Access2007_Отчеты

.pdf
Скачиваний:
20
Добавлен:
02.04.2015
Размер:
1.46 Mб
Скачать

Рис. 19. Первая страница отчета в режиме предварительного просмотра

Многотабличные отчеты

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

Врассмотренном выше примере в отчет добавлялись поля из таблицы ПОКУПАТЕЛЬ главной по отношению к таблице ДОГОВОР — источнику записей отчета. Причем в отчете предварительно была выполнена группировка по коду покупателя, поэтому задача сводилась к добавлению полей в существующий заголовок группы.

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

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

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

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

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

Таким образом группировка заменяет необходимость в создании подчиненных отчетов.

Разработка отчета с помощью мастера

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

Предположим, что макет отчета должен иметь вид, представленный на рис. 20. В соответствии с проектом макета в отчете предполагается выводить данные по каждому договору, включая сведения о покупателе, заключившем договор. Эти данные содержатся в таблицах ДОГОВОР и ПОКУПАТЕЛЬ. В табличной части по каждому договору необходимо вывести построчно данные о заказанных товарах, которые содержатся в таблицах ПОСТАВКА_ПЛАН и ТОВАР.

Договор №

 

 

 

 

 

от

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Поку патель

 

 

 

 

 

Адрес

 

 

Телефон

 

 

 

 

 

 

ИНН

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Банк

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Расчетный счет

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Наименов ание

 

Срок

 

Мин. Количеств о Цена

 

Единица

Став ка Стоимость

 

тов ара

постав ки

партия

измерения

 

НДС

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Общая су мма

Рис. 20. Проект макета отчета для вывода данных по договору фирмы

Выбор таблиц для отчета

Для создания отчета мастером выберем в области переходов таблицу ДОГОВОР, необходимую для формирования источника записей отчета, и выполним команду

Мастер отчетов (Report Wizard) на вкладке ленты Создание (Create). В первом открывшемся окне мастера Создание отчетов (Report Wizard) (рис. 21) уже выбрана

таблица ДОГОВОР, и необходимо выбрать ее поля, а также выбрать все другие таблицы и поля, включаемые в отчет.

Рис. 21. Первое окно мастера создания отчетов

В примере в соответствии с проектом отчета (рис. 20) выберем таблицы:

ДОГОВОР, из нее поля:

номер договора — НОМ_ДОГ;

дата заключения договора — ДАТА_ДОГ;

ПОСТАВКА_ПЛАН, из нее поля:

срок поставки — СРОК_ПОСТ;

минимальная партия поставки — МИН_ПОСТ;

количество товара — КОЛ_ПОСТ;

ТОВАР, из нее поля:

наименование товара — НАИМ_ТОВ;

цена — ЦЕНА;

единица измерения — ЕИ;

ставка НДС — СТАВКА_НДС;

ПОКУПАТЕЛЬ, из нее поля:

идентификационный номер налогоплательщика — ИНН;

наименование покупателя — НАИМ_ПОК;

адрес покупателя — АДРЕС_ПОК;

телефон — ТЕЛ;

банк, который обслуживает счет покупателя — БАНК;

номер расчетного счета покупателя — НОМ_РСЧ.

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

При выборе взаимосвязанных таблиц мастер отчетов в соответствии со схемой базы данных Поставка товаров (см. учебное пособие ―Access 2007. Создание базы данных и запросов‖) автоматически установит связи между ними и построит запрос, объединяющий записи этих таблиц и включающий в таблицу запроса указанные поля. Этот запрос будет использован в качестве источника данных отчета, а соответствующая инструкция SQL будет записана мастером в свойство отчета Источник записей (Record Source). Объединение записей таблиц будет производиться способом, указанным параметрами объединения для каждой из связей в схеме данных. Подсхема данных, включающая таблицы, на которых будет строиться отчет, приведена на рис. 22.

Рис. 22. Подсхема данных отчета ДОГОВОРЫ ФИРМЫ

В окне мастера (рис. 23) выберем вид представления данных в отчете. Чтобы получить отчет, заданный в рассматриваемом примере, выберем таблицу ДОГОВОР в качестве основы главной части отчета и увидим, что мастером на основе полей этой таблицы будет осуществлена группировка. Причем к полям группировки будут отнесены и поля таблицы ПОКУПАТЕЛЬ, поскольку эта таблица является главной

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

Рис. 23. Окно мастера отчетов при выборе вида представления данных

Поля таблицы ПОСТАВКА_ПЛАН составят основу записей для построения табличной части отчета. Причем записи о товарах, перечисленных в этой таблице, будут дополнены реквизитами из таблицы ТОВАР.

Обрат ит е вн има н ие

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

Если, выбирая вид представления данных, остановиться на таблице ПОКУПАТЕЛЬ, мастер создаст два уровня группировки: на первом будут собраны данные о покупателе, на втором — о его договорах (рис. 24).

Рис. 24. Окно мастера отчетов при выборе представления с двумя уровнями группировки

В следующем окне мастера (рис. 25) можно добавить уровни группировки. Если в предыдущем окне группировка производилась в соответствии с уровнями иерархии таблиц в схеме данных, что позволило отразить их подчиненность в отчете, то в этом окне добавление группировки может быть выполнено по любому из полей таблицы на любом уровне иерархии. Очевидно, что группировка должна иметь смысл. Например, в наборе строк из таблицы ПОСТАВКА_ПЛАН можно выполнить группировку по сроку поставки. В отчете, создаваемом мастером, можно определить до четырех уровней группировки.

Рис. 25. Окно мастера отчетов при добавлении новых уровней группировки

Чтобы добавить уровни группировки, дважды щелкните добавляемое в отчет имя поля из списка. Для удаления уровня группировки дважды щелкните его на экране страницы в правой части диалогового окна. Для добавления и удаления уровней группировки можно также воспользоваться кнопками со стрелками. Таким образом добавляется очередной уровень группировки, который отображается вложенным в предыдущий уровень группировки. Пример с включением уровня группировки по полю СРОК_ПОСТ (срок поставки) показан на рис. 26.

Рис. 26. Окно мастера отчетов при добавлении уровня группировки по сроку поставки

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

Дайте отчету имя Договоры фирмы и в качестве дальнейших действий выберите

Изменить макет отчета (Modify the report’s design). Результат работы мастера представлен на рис. 27.

Рис. 27. Отчет на основе нескольких взаимосвязанных таблиц, в режиме конструктора

Источник записей отчета

Мастер на основе выбранных таблиц создает запрос. Просмотрим его, открыв свойства отчета. Для этого в режиме конструктора щелкнем на пересечении линеек окна отчета и из контекстного меню выберем команду Свойства (Properties). На вкладке окна свойств отчета Данные (Data) в строке Источник записей (Record Source) содержится инструкция SQL:

SELECT [ДОГОВОР].[НОМ_ДОГ], [ДОГОВОР].[ДАТА_ДОГ], [ПОКУПАТЕЛЬ].[ИНН], [ПОКУПАТЕЛЬ].[НАИМ_ПОК], [ПОКУПАТЕЛЬ].[АДРЕС_ПОК], [ПОКУПАТЕЛЬ].[ТЕЛ], [ПОКУПАТЕЛЬ].[НОМ_РСЧ], [ПОКУПАТЕЛЬ].[БАНК], [ПОСТАВКА_ПЛАН].[СРОК_ПОСТ], [ПОСТАВКА_ПЛАН].[МИН_ПОСТ], [ПОСТАВКА_ПЛАН].[КОЛ_ПОСТ], [ТОВАР].[НАИМ_ТОВ], [ТОВАР].[ЦЕНА], [ТОВАР].[ЕИ], [ТОВАР].[СТАВКА_НДС]

FROM ТОВАР INNER JOIN ((ПОКУПАТЕЛЬ INNER JOIN ДОГОВОР

ON ПОКУПАТЕЛЬ.КОД_ПОК=ДОГОВОР.КОД_ПОК) INNER JOIN ПОСТАВКА_ПЛАН ON ДОГОВОР.НОМ_ДОГ=ПОСТАВКА_ПЛАН.НОМ_ДОГ)

ON ТОВАР.КОД_ТОВ=ПОСТАВКА_ПЛАН.КОД_ТОВ;

Инструкция SELECT определяет список полей запроса на выборку, а ее предложение FROM — последовательность и способ объединения таблиц.

Значком построителя, размещенным справа в строке Источник записей (Record Source), можно открыть инструкцию SQL в режиме конструктора запросов. Запрос, являющийся источником записей отчета, можно изменить в любом из этих режимов: добавить или удалить поля, таблицы.

З а м е ч а н и е

Если отчет создается в режиме конструктора или с помощью средства Пустой отчет (Blank Report), который отличается тем, что открывает пустой отчет в режиме макета, прежде всего, необходимо определить источник записей. Задается источник записей в

свойствах отчета, как в рассмотренном примере, путем записи инструкции SQL или с помощью построителя запросов. Кроме того, запрос может быть создан путем перетаскивания полей из области Список полей (Field List), доступной как в режиме конструктора, так и в режиме макета.

Доработка отчета в режиме конструктора

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

После создания отчета мастером надписи полей группировки и их значения в заголовке группы размещены в заголовке группы (рис. 27). Здесь же размещены надписи столбцов табличной части отчета. Это позволит выводить надписи реквизитов договора, как и их значения, а также надписи столбцов табличной части отчета один раз в начале каждого договора.

Используя средства конструктора отчетов, разместим подписи и поля в разделах отчета, как показано на рис. 28.

Рис. 28. Отчет о договорах фирмы, доработанный в режиме конструктора

Чтобы каждый договор отображался с новой страницы отчета, установите для заголовка группы значение свойства макета Конец страницы (Force New Page) равным До раздела (Before Section). Если договор занимает несколько страниц для отображения реквизитов договора и заголовков столбцов на каждой странице установите для заголовка группы значение Да в свойстве макета Повторение раздела (Repeat Section). При этом на каждой странице одного договора буду

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