|
Reporting Не работает параметр с множественным выбором значений
|
|||
---|---|---|---|
#18+
Развернут сервер отчетности SSRS версии 2012. C ним работает Report Builder 3.0. Все, казалось бы, начало работать до того момента, как приспичило в качестве параметра отчета использовать список значений с возможностью выбора НЕСКОЛЬКИХ значений. Например так: (вложение Безымянный). При фактическом выборе нескольких значений параметр сохраняет только ПЕРВОЕ выбранное значение. "Доказательство": Значение элемента: =Parameters!proekt.Value(0) Это самое упрощенное пояснение сути вопроса. Аналогично при передаче в хранимку, при использования табликса и т.д. Итак, что я ожидаю: при выборе значений из списка городов Москва, С-Петербург и Екатеринбург параметр проект должен принять значение: "Москва;С-Петербург;Екатеринбург". "Фактически": "Москва". Слова Доказательство и Фактически - в кавычках. Потому как и сам не пойму его истинное значение и как все-таки передать в ХП набор выбранных значений параметра... ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2017, 10:10 |
|
Reporting Не работает параметр с множественным выбором значений
|
|||
---|---|---|---|
#18+
Совсем не понятен Ваш вопрос, да веткой форума Вы ошиблись: 1. Вы наверное в запросе указываете явное равенство (... Where pole = @Param...), а нужно (....Where pole in (@Param)....) 2. Ваше доказательство всегда вернет первое значение (позиция 0), данные этого параметра хранятся в массиве а не в строке. Надеюсь я правильно понял вопрос. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2017, 10:27 |
|
Reporting Не работает параметр с множественным выбором значений
|
|||
---|---|---|---|
#18+
IDVT, искал, да так и не нашел ветку для Reporting. Список значений формируется на основе запроса. Проще некуда. Типа select город from города. На то он и параметр с возможностью выбора нескольких значений из списка, и он РАБОТАЕТ. Города выбираются. И в заголовке видно полное (правильное, ожидаемое) значение параметра. Список выбранных значений через точку с запятой. Этот параметр в таком виде и должен передаваться в процедуру, где через стандартную функцию типа split будет "развернут" список городов во временную табличку. Но проблема как раз в том, что значение параметра остается ПО ПЕРВОМУ ВЫБРАННОМУ ЗНАЧЕНИЮ. Просто "Москва"... Все перепробовал, не могу понять в чем дело Модератор: Тема перенесена из форума "Microsoft SQL Server". ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2017, 10:48 |
|
Reporting Не работает параметр с множественным выбором значений
|
|||
---|---|---|---|
#18+
andrst65Этот параметр в таком виде и должен передаваться в процедуру, где через стандартную функцию типа split будет "развернут" список городов во временную табличку Не совсем понятно что Вы пытаетесь сделать с параметром. Вы выбрали некоторые значения в отчете, и нажали кнопку формирования отчета, что должно потом происходить в ХП'шки. На сервере ваш запрос будет выглядеть как то так: Код: sql 1.
где перечисление и есть выбранные поля в параметре ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2017, 11:54 |
|
Reporting Не работает параметр с множественным выбором значений
|
|||
---|---|---|---|
#18+
Кажется я понял в чем проблема у Вас =) Код: 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. 36. 37. 38. 39. 40. 41. 42. 43. 44.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2017, 12:52 |
|
Reporting Не работает параметр с множественным выбором значений
|
|||
---|---|---|---|
#18+
IDVT, спасибо за труд select 'Москва' as City union select 'Орел' union select 'Казань' union select 'Подольск' union select 'Чехов' @City Осталось догадаться, как запихнуть в @City отмеченные значения в поле со списком городов. То есть пока все то же самое. Похожая функция-парсер у меня уже давно ждет, чтобы в @City был перечень городов через какой-нибудь знак препинания... ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2017, 13:10 |
|
Reporting Не работает параметр с множественным выбором значений
|
|||
---|---|---|---|
#18+
=) 1. создали новый отчет, настроили источник данных. 2. создали датасет1, в него разместили следующий запрос: Код: sql 1. 2. 3. 4. 5.
это и есть перечень значений для параметра. 3. создали параметр множественного выбора, источник данных ДатаСет1 поле значения и отображения City 4. создали в БД функцию парсера Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
5. Создали ХП'Шку, она будет результатом выполнения отчета, просто вписать запрос не получится, т.к. функция парсер принимает одну строку для парсинга и символ разделителя (по умолчанию это запятая) Код: sql 1. 2. 3. 4. 5. 6. 7.
6. в тестовом отчете создали ДатаСет2, это и будет результат отчета, он вернет выбранные значения, в настройках ДатаСета2 выбрать источник хранимая процедура и выбрать входной параметр. -------- возможно у Вас локаль другой, в следствии разделитель выбранных значений будет не запятая, все это можно уточнить в профайлере. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2017, 13:35 |
|
Reporting Не работает параметр с множественным выбором значений
|
|||
---|---|---|---|
#18+
Так будет работать быстрее в разы 1. в отчете есть DataSet1, содержит тестовый набор для параметра @City множественного выбора Код: sql 1. 2. 3. 4. 5. 6. 7.
в настройках параметра все тоже самое что и ранее, источник DataSet1, поля City 2 В DataSet2 разместить этот код, вместе с парсером (т.е. ранее созданная функция парсера не нужна), в виде простого запроса Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
В этом же окне перейти на вкладку параметры и вписать следующее: Имя параметра -> @STR_Report (должно подтянуться автоматом) Значение параметра -> =Join(Parameters!City.Label, ",") где запятая будет разделитель в собранной строке, она же в лоб указана в запросе. 3. накидать табличную часть на основе ДатаСета2, там всего будет одна колонка ---- переделать под себя ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2017, 13:58 |
|
Reporting Не работает параметр с множественным выбором значений
|
|||
---|---|---|---|
#18+
IDVT, я бы не рекомендовал использовать XML для парсинга строки с разделителем. Если встретятся символы с кодом 0 , 1 или & < > = то будет ошибка "Синтаксический анализ XML". Также, если строка оканчивается разделителем, как в примере ниже, то будет не совсем хорошо. Код: sql 1. 2. 3. 4. 5.
Вариант с рекурсией гораздо БЫСТРЕЕ чем с xml и лишен обеих недостатков, которые были выше с xml Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
Для столбца таблицы. Тест на скорость Код: 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. 36. 37. 38.
А про функцию JOIN правильно сказано. andrst65 , на всякий случай картинка по настройке ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2017, 14:32 |
|
|
start [/forum/topic.php?fid=31&gotonew=1&tid=1533122]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
40ms |
get topic data: |
11ms |
get first new msg: |
7ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
2ms |
others: | 10ms |
total: | 153ms |
0 / 0 |