Службы отчетности - ввод данных в подотчеты - PullRequest
1 голос
/ 19 ноября 2009

Мне поручено составлять отчеты по данным обследования с использованием служб Reporting Services 2008.

Моя задача заключается в следующем:

  • опрос содержит любое количество вопросов
  • вопрос относится к одному из трех типов (числовое значение, вопрос «да / нет» или произвольный текст)

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

На самом деле это пока работает довольно хорошо, но я сталкиваюсь с одной большой проблемой: как я могу получить данные в подотчеты?

Подход, который я вижу сейчас, состоит в том, чтобы каждый (под) отчет по типу вопроса определял свой собственный набор данных на основе общего источника данных для извлечения значений из базы данных. Я почти уверен, что это сработает, но я не очень заинтересован в том, чтобы 5, 10, 20 вложенных отчетов отправлялись в базу данных, чтобы получить свои данные независимо.

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

Я что-то упускаю совершенно очевидное? У меня не было большого опыта в Reporting Services, и мой последний проект с ним был четыре года назад (с Reporting Services 2000) - так что есть большая вероятность, что я просто ослеп на очевидное решение :-) Пожалуйста, дайте мне знать!

Спасибо за любые подсказки, ссылки на хорошие статьи или блоги в службах Reporting Services и любую помощь вообще!

1023 * Марк *

Ответы [ 3 ]

2 голосов
/ 19 ноября 2009

Обычный способ - передать параметры (например, диапазон дат) из основного отчета во вложенные отчеты, а затем подчиненные отчеты позаботятся обо всем остальном. Чтобы повысить производительность, посмотрите, можете ли вы отображать вложенные отчеты из кэша или снимка. Кэш хранит отчет с комбинацией переданных параметров, поэтому после первого «попадания в базу данных» некоторые или большинство вложенных отчетов могут фактически быть возвращены из кэша.

1 голос
/ 26 августа 2010

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

0 голосов
/ 09 марта 2010

Если параметры равны конечным данным, которые вам нужны, просто используйте их и создайте фиктивный набор данных в подотчете - вы можете просто выбрать «SELECT 1 AS DUMMY» в качестве sql (это предполагает, что подотчеты имеют отличные друг от друга макеты)

Или, может быть, вы можете переосмыслить «основной» набор данных с помощью функции или табличной функции?

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

...