Отчет SSRS дает ошибку для многозначного параметра

Я объявил многозначный параметр в моем отчете SSRS. Параметр "Команда" имеет несколько значений в текстовом виде: "Все", "HY", "DFI", "CRS" и т. Д. Теперь я использую этот параметр для отображения или скрытия различных столбцов в моем отчете.

Например, или один из столбцов, видимость работает следующим образом:

=IIF(Parameters!Team.Value = "HY", True,False) Or IIF(Parameters!Team.Value = "EQ", True,False) Or IIF(Parameters!Team.Value = "GL", True,False) Or IIF(Parameters!Team.Value = "CRS", True,False)

Отчет работает нормально, пока я выбираю одно значение из выпадающего списка параметров. Но я хотел выбрать более одного значения, поэтому я щелкнул "Разрешить несколько значений" под Свойствами параметра. Сделав это и запустив отчет, я получаю следующую ошибку:

Выражение Hidden для tablix 'Tablix2' содержит ошибку: не удалось разрешить перегрузку, поскольку нельзя вызвать Public '=' с этими аргументами: 'Public Shared Operator =(a As String, b As String) As Boolean': параметр сопоставления аргумента "a" не может конвертировать из "Object()" в "String". (RsRuntimeErrorInExpression)

Как я могу устранить эту ошибку?

Обновление: ошибка устранена. Но отображение комбинированных столбцов, которое было целью добавления нескольких значений в параметре, все еще не разрешено, когда я выбираю более одной команды в раскрывающемся списке, например. "DFI" и "HY", тогда вместо отображения столбцов для обоих, отчет скрывает столбцы для обеих команд.

Заранее спасибо.

2 ответа

Решение

Поскольку ваш параметр команды позволяет выбрать несколько значений, Parameters!Team.Value становится объектом массива. Это означает, что вы не можете сделать сравнение Parameters!Team.Value = "aString" потому что они несравненные типы.

Чтобы достичь желаемого результата, вам придется изменить Parameters!Team.Value = "aString" звонки в Join(Parameters!Team.Value,",").contains("aString"),

Join Функция возвращает массив объектов, ограниченный указанной строкой.

Пример: Join(Parameters!Team.Value,",") Может вернуться "HY,EQ,GL"

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

Для вас столбцы с "DF" или "Все" выбран:

=IIF(Join(Parameters!Team.Value,",").Contains("DF") OR Join(Parameters!Team.Value,",").Contains("ALL"), False,True)

Для столбцов, для которых выбрано "HY" или "All":

=IIF(Join(Parameters!Team.Value,",").Contains("HY") OR Join(Parameters!Team.Value,",").Contains("ALL"), False,True)

Для столбцов с выбранным "EQ" или "All":

 =IIF(Join(Parameters!Team.Value,",").Contains("EQ") OR Join(Parameters!Team.Value,",").Contains("ALL"), False,True)

Помните, что свойство "hidden" имеет значение True, если столбец скрыт, и значение False, когда оно отображается. Вы можете использовать функцию Array.IndexOf для поиска определенного значения, выбранного в параметре с несколькими значениями, и установить столбец каждой команды следующим образом (это команда HY):

=IIF(Array.IndexOf(Parameters!Team.Value, "HY") > -1, False, True)

На английском: "Если вы нашли HY в качестве значения выбранного параметра, не скрывайте этот столбец, в противном случае скрывайте его".

Другие вопросы по тегам