Нулевые параметры SSRS 2008

Как передать параметры null в отчет SQL 2008? Код, который взаимодействует с веб-службами ReportExecution и ReportService2005, всегда выдает ошибку при выполнении метода ReportExecutionService.Render() после того, как я установил параметры (не включая значение, допускающее значение NULL) с помощью вызова метода ReportExecutionService.SetExecutionParameters():

"...This report requires a default or user-defined value for the report parameter...to run or subscribe to this report, you must provide a parameter value."

даже несмотря на то, что этот параметр определен в файле .rdl как nullable и по умолчанию равен null.

Должен ли я изменить свой код? Изменить параметры параметров в файле .rdl?

var rs = new ReportExecutionService();
rs.Url= "http://Z/ReportServer/ReportExecution2005.asmx";     
rs.Credentials = CredentialCache.DefaultCredentials;
rs.ExecutionHeaderValue = new ExecutionHeader();

var executionInfo = rs.LoadReport(ReportTarget, null);
var parameterList = new List<ParameterValue>();

foreach (ParameterValue parameter in Parameters)
{
  parameterList.Add(parameter);
}

foreach (var expectedParameter in executionInfo.Parameters)
{
  if 
  (  
      expectedParameter.Nullable && 
      !parameterList.Exists(delegate(ParameterValue pv) 
      { return pv.Name == expectedParameter.Name; })
  )
  {
     var parameter = new ParameterValue();
     parameter.Name = expectedParameter.Name;
     parameter.Value = null;

     parameterList.Add(parameter);
  }
}

rs.SetExecutionParameters(parameterList.ToArray(), "en-us");

Warning[] warnings = null;
string[] streamIDs = null;
string encoding = null;
string extension = null;
string mime = null;

var content = rs.Render("PDF", null, out extension, out mime, out encoding, out warnings, out streamIDs);

person JonathanWolfson    schedule 08.07.2009    source источник
comment
Попробуйте включить пустую опцию для параметра   -  person u07ch    schedule 08.07.2009
comment
Я пробовал это, и это не помогает.   -  person JonathanWolfson    schedule 09.07.2009


Ответы (2)


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

Во всяком случае, этот код, кажется, работает для меня в VB.

params = New ArrayList

...

Dim ssrsPrm As New Microsoft.Reporting.WebForms.ReportParameter(param.Name)
ssrsPrm.Values.Add(Nothing)
params.Add(ssrsPrm)

...

Me.ReportViewer1.ServerReport.SetParameters(DirectCast(params.ToArray(GetType(Microsoft.Reporting.WebForms.ReportParameter)), Microsoft.Reporting.WebForms.ReportParameter()))
person user600410    schedule 02.02.2011
comment
Старый поток, я знаю, но это то, что я сделал, чтобы передать NULL из VB. Хотя я не использовал строку DirectCast, просто добавил параметры в список (Of ReportParameter) и передал список с помощью SetParameters. - person Dave Johnson; 02.05.2014

Помогает ли этот ответ из немного другого вопроса? Если нет, возможно, будет полезен дополнительный код.

ХТН

person Mozy    schedule 08.07.2009