SSRS вытягивает переменные или значения из суб-отчета в основной отчет

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

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

MainReportTextbox =(Sum(columnA, "Main Dataset"))-(SubReportTextBox))

или

MainReportTextbox =(Sum(columnA, "Main Dataset"))-(subReportVariable))

Я видел несколько предлагаемых решений, таких как этой. Который использует =[Reports]!MainReport!SubReport!Textbox схема. Проблема в том, что [Reports] не признала идентификатор.

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

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

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

2 ответов


ссылки в вопросе и комментариях иногда ссылаются на отчеты без SSRS: синтаксис [subreport].[Report]![MyFieldName] или [Reports]![YourReportName]![YourSubReportName]![TheValueFromTheSubReportYouWantToReference] не используются в SSRS. Это, однако, используемые в проектировании отчеты в MS Access, как ojeffrey в обсуждении вам ссылку.

нет общего метода доступа к данным во вложенном отчете. Модель службы SSRS является то, что родитель обработки данных отчета, отчета обработки данных, вложенные отчеты обрабатываются, результаты вернуться к родителю, то родитель оказывается, включая, при необходимости, вложенный отчет. Единственные данные, передаваемые между двумя параметрами is, передаются во вложенный отчет, а отображаемый вывод передается обратно родительскому. Вы увидите, что данные, переданные от родителя, должны быть как параметры отчета здесь:http://technet.microsoft.com/en-us/library/ms160348 (v=sql.100).aspx

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

для цитирования авторитетных источников: это обсуждение подводит итог:

нет, ссылка на элемент отчета во вложенном отчете не допускается.

но это немного старый, есть также это более недавнее обсуждение работы способы, предоставленный сотрудником Microsoft и MS BI MVP:

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

[переход к другому сообщению]...

Теперь, кажется, вы хотите рассчитать разница между основным отчетом и вложенным отчетом. Также, потому что они имейте другой источник данных, поэтому вы не можете использовать nest таблица / матрица / список, верно? Если это так, я могу придумать один обходной путь: передать параметр в подменю отчетов и вычислить общий / промежуточный итог в sub report. Я имею в виду, создать несколько скрытых / внутренних параметров, передать значения из основного отчета в вложенный отчет через параметры, а затем вычислите там итог / подытог.

ответ Jeroen на связанный вопрос указывает направление, в котором я бы пошел: используйте "общий набор данных" и включите кэширование, если набор данных выполняется медленно. Затем то же выполнение набора данных можно использовать для родительского и вложенного отчетов. Это может изменить использование параметры: обычно они перемещаются из SQL-запроса в фильтр набора данных в отчете.

но с Lookup функции введенный в SSRS 2008R2, вы можете получить очень гибкое с уровнем отчета соединяет между наборами данных.

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


создайте переменную в главном отчете и обновите ее в суб-отчете, чтобы вы могли вернуть значение в основной отчет

ex: Создайте формулу в главном отчете с именем {@Total} place, текущим в нем

WhilePrintingRecords;
shared Numbervar myTotal := 0;

Примечание: размещение; не будет печатать значение и без ; будет печатать значение в приведенном выше примере значение не будет напечатано, если вы хотите напечатать значение формулы просто удалить ; из второй строки ex

WhilePrintingRecords;
shared Numbervar myTotal := 0

Теперь поместите {@Total} в заголовок отчета вашего main доклад Теперь создайте вторую формулу в подотчете, где вы хотите добавить подытог в Формулу основного отчета с именем {@addTotal} поместите в нее следующие строки

WhilePrintingRecords;
shared Numbervar myTotal;
myTotal := myTotal + 200; //or any formula or field

добавьте эту формулу, чтобы поместить в sub отчет, где вы хотите добавить значение в total

Теперь создайте формулу в главном отчете, чтобы показать общий итог с именем {@showTotal} и поместите в него следующие строки

WhilePrintingRecords;
shared Numbervar myTotal;
myTotal

поместите {@showTotal} в основной отчет, где вы хотите показать это значение в отчете, но помните, что вы должны поместить эту формулу после суб-отчета.

примечание: для присвоения значения переменной используйте: = operator