Многозначный параметр SSRS. Проверьте, выбрано ли «Выбрать все» - PullRequest
15 голосов
/ 01 февраля 2012

У меня есть многозначный параметр в моем отчете SSRS. Я хочу выяснить, отмечен ли (Выбрать все) в этом параметре.

Другими словами, проверяются ли все значения в параметре или проверяются только некоторые значения.

Возможно ли это?

Я могу узнать количество выбранных значений через Параметры! Параметр .Count. Есть ли способ узнать общее количество элементов по этому параметру?

Ответы [ 7 ]

21 голосов
/ 13 февраля 2013

Если у кого-то все еще возникают проблемы с этим, я просто написал это простое исправление.

=IIF(COUNTROWS("dataset").Equals(Parameters!parameter.Count),"it is equal","this is not equal")
7 голосов
/ 22 мая 2015

Для конкретного варианта использования отображения выбранного фильтра в отчете в текстовом поле, вот выражение, которое будет отображать «Все», если выбрано «(Выбрать все)», в противном случае оно будет отображать все выбранные значения каксписок через запятую:

=IIF(
     Parameters!YourMultivalueParam.Count = countrows("YourDataset"),
     "All",
     Join(Parameters!YourMultivalueParam.Label,", ")
 )

(разбит на несколько строк для удобства чтения)

countrows ссылка: https://technet.microsoft.com/en-us/library/dd255215.aspx


Кредит для других ответов,просто хочу расширить их для этого распространенного сценария.

6 голосов
/ 01 февраля 2012

Ваш подход звучит хорошо: я хотел бы, чтобы параметры для параметра исходили из набора данных.

Затем вы можете использовать =COUNTROWS("DataSetName"), чтобы получить общее количество параметров для вашего параметра и сравнить его с параметрами! Параметр .Счет, как вы предлагаете.

2 голосов
/ 24 февраля 2012

Я тоже сталкивался с этой проблемой .. Я решил ее таким образом ..

У меня есть один многозначный параметр с именем «Carrier» ... Я добавил один параметр «CarrierHidden», который совпадает с «Carrier», только я сделал его Visibility как Hidden.

= "Carrier =" & Switch (Параметры! CarrierHidden.Count = Параметры! Carrier.Count, "Все", Параметры! Carrier.Count> 1 И Параметры! CarrierHidden.Count> Параметры! Carrier.Count, "Multi", Параметры! Carrier.Count = 1, Параметры! Carrier.Label (0))

Это сработало для меня.

1 голос
/ 25 сентября 2018

Простой способ - подсчитать количество выбранных параметров и сравнить их с набором данных

=IIF(Parameters!company_number.Count = CountRows("Dataset1"), True, False)
1 голос
/ 20 ноября 2013

Проблема в том, что если вы пытаетесь получить что-то для другого набора данных, перекрестные ссылки на количество строк в другом наборе данных не будут работать.Вам придется идти с тем, что говорится в предыдущем посте.Создайте внутренний параметр точного типа и назначьте значение по умолчанию для всего набора данных.Таким образом, у вас есть максимальное количество строк с момента скрытого parameter.count = rowscount.Таким образом, вы можете использовать его в другом наборе данных, при условии, что набор данных будет ПОСЛЕ первого заполнения.

0 голосов
/ 31 декабря 2014

В соответствии с поиском справки Microsoft ssrs:

= Параметры! .Count Возвращает целочисленное значение 1. Для параметра с одним значением счетчик всегда равен 1.

Я проверил, что это действительно работает, проверьте целое число, возвращаемое для встроенного поля счетчика параметров.

Разрешить множественные значения при выборе параметра. Проверка значения в вышеуказанном поле позволит узнать, сколько значений фактически выбрал пользователь.

В моей ситуации я допускаю несколько значений для номера компании. Это дает пользователям возможность выбрать одну компанию для отчетности или несколько одновременно. По запросу клиента, если они выбирают более одного, данные отображаются горизонтально. Если в списке параметров выбрана только одна компания, отобразите данные по вертикали и скройте другую таблицу.

Так что мое видимость отображения или скрытия выражения выглядит так в одной таблице:

= IIF (Параметры! Company_number.Count> 1, True, False)

и вот так в другом:

= IIF (Параметры! Company_number.Count = 1, True, False)

Удачного кодирования! Robyn

...