Гость
Форумы / Отчетные системы [игнор отключен] [закрыт для гостей] / MSRS 2008 Передать в функцию массив строк / 9 сообщений из 9, страница 1 из 1
18.09.2014, 17:44
    #38750776
смотрю_тут
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSRS 2008 Передать в функцию массив строк
Пользователь выбирает в чек боксе несколько значений, эти значения должны отправиться в функцию для табликса.
Значения для чекбокса берутся из запроса виде зн1, зн2 и т.д

Как передать массив в виде 'зн1','зн2'?
...
Рейтинг: 0 / 0
18.09.2014, 18:13
    #38750809
user89
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSRS 2008 Передать в функцию массив строк
смотрю_тут,

Есть 2 пути: Filter метод (не очень быстрый) и SQL метод (эффективнее). Я использую 2-й метод, ручной работы больше, но скорость выше.
Код: plaintext
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.
I used the MS example of checking the multi checkbox for the parameter and then using a WHERE Column IN (@MultiParam)

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
19.09.2014, 11:15
    #38751286
смотрю_тут
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSRS 2008 Передать в функцию массив строк
Да, я уже нашел через JOIN., подошло мне это.

Еще один вопрос, как можно понять что выбраны все элементы checkbox-a, чтобы не перечислять все элементы, а сказать "все" если выбраны все элементы?
...
Рейтинг: 0 / 0
19.09.2014, 11:48
    #38751334
Klick
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSRS 2008 Передать в функцию массив строк
смотрю_тут,

Не придумывайте костыль. Если выбраны все то и запрос вернет вам все.
...
Рейтинг: 0 / 0
19.09.2014, 12:02
    #38751363
смотрю_тут
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSRS 2008 Передать в функцию массив строк
Klickсмотрю_тут,

Не придумывайте костыль. Если выбраны все то и запрос вернет вам все.
какой костыл?! мне в заголовок надо, если выбраны все элементы(пусть их 20 штук), чтобы все не перечислять, написать в заголовке "ВСЕ"
...
Рейтинг: 0 / 0
19.09.2014, 13:01
    #38751441
смотрю_тут
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSRS 2008 Передать в функцию массив строк
смотрю_тут,

нашел, сделал так
IIF(Parameters!author.count = COUNTROWS( "authors"),"Все",join(Parameters!author.Value,"," ))
...
Рейтинг: 0 / 0
19.09.2014, 13:02
    #38751444
Klick
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSRS 2008 Передать в функцию массив строк
смотрю_тут,

Ну если у вас список значений формируется из запроса, можете сравнивать кол-во параметров пришедших в хранимку с количеством в запросе формирующем список параметров.
...
Рейтинг: 0 / 0
19.09.2014, 14:45
    #38751619
Klick
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSRS 2008 Передать в функцию массив строк
смотрю_тутсмотрю_тут,

нашел, сделал так
IIF(Parameters!author.count = COUNTROWS( "authors"),"Все",join(Parameters!author.Value,"," ))

Ух! Не знал про такое. Спасибо за инфу!
...
Рейтинг: 0 / 0
23.09.2014, 11:50
    #38754394
Саня Павлов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSRS 2008 Передать в функцию массив строк
Век живи - век учись. Не знал. У себя добавляю значение параметра " Все" с ID 0 и обрабатываю в процедуре
...
Рейтинг: 0 / 0
Форумы / Отчетные системы [игнор отключен] [закрыт для гостей] / MSRS 2008 Передать в функцию массив строк / 9 сообщений из 9, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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