Несколько вложенных отчетов, использующих одни и те же данные для разных вычислений

#sql-server-2008 #crystal-reports #grouping #crystal-reports-xi #subreports

#sql-server-2008 #crystal-отчеты #группировка #crystal-reports-xi #вложенные отчеты

Вопрос:

tl; dr: возможно ли иметь уровни группировки внутри вложенного отчета, который полностью получает свои данные из основного отчета? Мне нужно создать единый отчет, который принимает один набор данных и отображает четыре или более разных обобщения / вычисления по данным.

=================================================================================

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

Я хотел бы получить все необработанные данные один раз из одной хранимой процедуры и связать эти данные с различными вложенными отчетами в одном.RPT-файл. Пока кажется, что я не могу использовать эксперт группы во вложенном отчете, который не вызывает хранимую процедуру — там нет отображаемых полей отчета для выбора для группировки.

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

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

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

Можно ли это сделать в Crystal Reports XI, с вложенными отчетами или без них, без многократных обращений к базе данных, которые возвращают одни и те же данные более одного раза?

Ответ №1:

В конечном итоге я отказался от первоначального запроса. Вместо этого я реализовал план B.

Я создал новую таблицу в SQL Server для хранения всех подробных данных, необходимых для этого отчета. Основная хранимая процедура, связанная с отчетом, 1) удаляет старые данные из таблицы на основе заданных параметров, 2) вставляет все необходимые данные и 3) возвращает только данные, необходимые для первого и самого внешнего сводного отчета.

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

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

Это не такое элегантное решение, как я изначально имел в виду, но в конечном итоге оно отвечает нашим потребностям.