Отчет SSRS дает ошибку для многозначного параметра - PullRequest
0 голосов
/ 05 июля 2018

Я объявил многозначный параметр в моем отчете 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)

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

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

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

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

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

Ответы [ 2 ]

0 голосов
/ 05 июля 2018

Поскольку параметр вашей команды позволяет выбирать несколько значений, 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» или «All»:

=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)
0 голосов
/ 05 июля 2018

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

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

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

...