SSRS устанавливает параметры программно, вызывая состояние ValidValueMissing - PullRequest
6 голосов
/ 11 сентября 2011

Я пытаюсь получить параметр имени пользователя и заменить его значение именем пользователя сеанса, чтобы я мог перейти к хранимой процедуре внутри DRL, чтобы сгенерировать временную метку таблицы с этим именем пользователя.Параметр "username" является одним из параметров RDL, который поставляется со значением по умолчанию, и я пытаюсь изменить его следующим кодом.

Замена одного из параметров ReportParameters:

var userParameter = GetUserParameter();
if (userParameter != null)
{
    newParameters.Remove(newParameters.FirstOrDefault(param => param.Name.Contains(CurrentUserParameterName)));
    newParameters.Add(userParameter);
}

Поиск имени пользователя Параметры отчета:

var paremeters = ReportViewer.ServerReport.GetEditableHiddenParameters();

//finds parameter by its name, pelase view const value in CurrentUserParameterName
var userParameter = paremeters.FirstOrDefault(param => param.Name.Contains(CurrentUserParameterName));
if (userParameter != null)
{
    userParameter.Values.Clear();
    userParameter.Values.Add(Utils.GetUserName());
}
return userParameter;

Установить параметры для ServerReport:

ReportViewer.ServerReport.SetParameters(parameters);

После запуска отчета я получаю сообщение «В параметре« имя пользователя »отсутствует значение»

Когда я отлаживаю и смотрю в ServerReport.GetParameters(), я вижу, что у меня есть «имя пользователя» ReportParameter, у меня есть значения (новые значения), но его состояние - «MissingValidValue».

Что я делаю не так?Заранее спасибо, Эдди

1 Ответ

6 голосов
/ 14 сентября 2011

Мне наконец-то удалось решить эту проблему благодаря этой статье: http://technet.microsoft.com/en-us/library/dd220464.aspx

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

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

...