Пользовательская сборка служб Reporting Services: доступ к параметрам отчета

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

Для этого мне, очевидно, нужно сослаться на некоторую сборку служб отчетов, но я не могу понять, какая именно. Я пробовал Microsoft.ReportingServices.ProcessingCore, поскольку у него есть класс Report с различными свойствами, такими как Parameters и т. Д., Но когда я попытался передать объект Report из раздела настраиваемого кода RDL моему классу, я получил следующую ошибку:

Unable to cast object of type 'ReportExprHostImpl' to type 'Microsoft.ReportingServices.ReportRendering.Report'.

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

Итак, вопрос в том, как я могу этого добиться, на какую сборку я должен ссылаться? И если возможно, могу ли я получить доступ к объекту Report, не передавая его из RDL, т.е. чтобы я мог просто зарегистрировать экземпляр своего класса, а затем написать такие выражения, как:

=Utils.DoStuffWhileReferencingReportParameters(Fields!field.Value)


person Saulius Valatka    schedule 17.11.2009    source источник


Ответы (1)


Ссылайтесь на эти две библиотеки DLL в своей библиотеке: Microsoft.ReportingServices.ProcessingCore Microsoft.ReportingServices.ProcessingObjectModel

Поместите следующий код в свою библиотеку (в качестве примера)

using Microsoft.ReportingServices.ReportProcessing.ReportObjectModel;

public static string Test(Parameters item)
{

    return item ["my_parameter_name"].Value.ToString();
}

Вот пример выражения для использования в вашем RDL-файле:

=MyNameSpace.MyStaticClass.Test(Parameters)
person Steve    schedule 16.12.2009
comment
Я не думаю, что ссылка на ProcessingCore необходима, и я обнаружил, что ссылка на объектную модель не решает точную проблему, которая у меня была, на самом деле я обнаружил, что в принципе невозможно ссылаться на параметры в dll, не передав их из RDL каким-то образом - это то, что я в итоге сделал, я заставил конструктор принимать коллекцию Parameters. В любом случае, за ваши старания - я принимаю ваш ответ :) - person Saulius Valatka; 19.12.2009