powered by simpleCommunicator - 2.0.39     © 2025 Programmizd 02
Форумы / Отчетные системы [игнор отключен] [закрыт для гостей] / MS Reporting Services работа с параметром
4 сообщений из 4, страница 1 из 1
MS Reporting Services работа с параметром
    #38829123
Lania
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!
Создала отчет в RS. В отчете используется параметр. Для параметра установлено "разрешить несколько значений". Во время просмотра отчета при выборе нескольких значений параметра отображаются данные только по первому значению параметра.
Например: отчет формируется в виде таблицы, там есть "Отделы":финансовый,бухгалтерия,юридический и т.д. При формирование отчета в параметре указываем Отдел: бухгалтерия;финансовый. Отчет отображает данные только по отделу:бухгалтерия.
...
Рейтинг: 0 / 0
MS Reporting Services работа с параметром
    #38829196
Фотография user89
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lania,

долистайте до раздела Фильтрация таблицы данных с помощью многозначного параметра .

Я использую второй метод. Он сложнее, но быстрее
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
I used the MS example of checking the multi checkbox for the parameter and then using a WHERE Column IN (@MultiParam)

Есть 2 пути: Filter метод (не очень быстрый) и SQL метод (эффективнее)

Filter Method (не очень быстрый)
Create a multi-value parameter.  Let's call it @Animals and you select Dog, Cat, Bird (or Select All) 
Your main Dataset, which will return a result set to your report, does not reference @Animals in it's where clause. 
Instead, click on Dataset Properties and select Filters 
In the Filter setup dialog, click on the column in your result set that corresponds to the Animal value. 
For the operator, select the "In" operator 
For the value, type in [@Animals] 
Done! 

This will "post-filter" your SQL query and only return the values that have been filtered by your multi-value parameter.
Only Dog, Cat, Bird records will return to your report.  The downside to this approach is that the processing occurs at the Report Server level 
and not by your Database server, because you are not using SQL to do the work.  In many cases (most cases!) I find this the easiest and quickest way
to do what you want.



 SQL Method (эффективнее)
Create a multi-value parameter.  Let's call it @Animals and you select Dog, Cat, Bird (or Select All).  Same as the Filter Method! 
You will need a stored procedure for your main report Result Dataset.  Let's call it sp_get_animals. 
sp_get_animals will take one argument, @Animals, so the calling mechanism looks like this:  exec sp_get_animals @Animals 
When you are configuring your parameters in the Query dialog, use the following expression to define the value of your parameter:
 =join(Parameters!Animals.Value,",") 
This will create a string that looks like this:  "Bird,Dog,Cat" 
In the body of your stored procedure, you will have to parse @Animals to pick off Bird, Dog, Cat. 
Once you have parsed @Animals, you can use the SQL IN clause to actually process it. 


Т.е. по русски:
Тогда с помощью Expression вы можете сформировать строку со всеми выбраннымии Value параметра и передать ее в хранимку.
=Join(Parameters!<ParameterName>.Value,", ") - Выражение, объединяющее в одну строку все значения в массиве многозначного параметра типа String.
А в хранимке выполняйте парсинг и обрабатывайте дальше, как вам нужно.

...
Рейтинг: 0 / 0
MS Reporting Services работа с параметром
    #38830998
Lania
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо.
...
Рейтинг: 0 / 0
MS Reporting Services работа с параметром
    #38831296
Igork-9y
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день!
Создала отчет в RS. В отчете используется параметр. Для параметра установлено "разрешить несколько значений". Во время просмотра отчета при выборе нескольких значений параметра отображаются данные только по первому значению параметра.
Например: отчет формируется в виде таблицы, там есть "Отделы":финансовый,бухгалтерия,юридический и т.д. При формирование отчета в параметре указываем Отдел: бухгалтерия;финансовый. Отчет отображает данные только по отделу:бухгалтерия.


Хммм, немного не ясно - но запрос к sql прекрасно переваривает условие типа

where [Поле] in (@Param) (@Param может принимать несколько значений).

Или у вас пользователь при вызове отчета ручками прописывает в параметре "бухгалтерия;финансовый"?
Ну так это, ИМХО, не очень верно:
1. Очепятки как есть
2. Когда пользователю будет необходимо указать 20 отделов - он придет к вам и расскажет, как вас ненавидит.
3. Извращения с парсером.

Так что как бы сделал я:
1 вариант - у вас в БД есть списки отделов тогда:
1. Делаете еще один датасет, в котором отбираются значения отделов
2. Сделать @Param для которого определить Допустимые значения - получать значения из запроса - указать необходимое поле из второго датасета

2 вариант - у вас в БД нет списка отделов тогда:
1. Сделать @Param для которого определить Допустимые значения - указать значения - заполнить перечень отделов. Проблема в том, что придется переделывать отчет каждый раз, когда наши любимые HR добавят/удалят/переименуют отдел.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Отчетные системы [игнор отключен] [закрыт для гостей] / MS Reporting Services работа с параметром
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]