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