|
Восстановление в SSRS 2008 Значений пар-ров выбранных при предыдущем запуске (СДЕЛАНО!)
|
|||
---|---|---|---|
#18+
Вообщем была задача, чтобы при запуске отчета по умолчанию выбирались те значения параметров, которые были выбраны при предыдущем запуске - собственно банально в параметре указывался список столбцов который необходимо показывать в таблице (указывался с помощью multi-value параметра) Этот список должен был быть сохранен и автоматически при следующем запуске восстановлен, чтобы пользователю заново не пришлось выбирать. С помощью кувалды и такой то матери сие было реализовано УРА!!!! хотя конечно и не очень стройно-гладко. Теперь при следующем запуске всегда используются параметры установленные при предыдущем запуске. Если необходимо изменить, то надо менять параметры и перезапускать отчет (соответственно эти измененные параметры будут использованы далее) Если кому интересно - могу рассказать как делал ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2012, 21:52 |
|
Восстановление в SSRS 2008 Значений пар-ров выбранных при предыдущем запуске (СДЕЛАНО!)
|
|||
---|---|---|---|
#18+
DKey, интересно. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2012, 08:36 |
|
Восстановление в SSRS 2008 Значений пар-ров выбранных при предыдущем запуске (СДЕЛАНО!)
|
|||
---|---|---|---|
#18+
Интересно было бы увидеть реализацию. Пока у себя не делал. Предполагаю через процедуру при выводе отчета. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2012, 10:09 |
|
Восстановление в SSRS 2008 Значений пар-ров выбранных при предыдущем запуске (СДЕЛАНО!)
|
|||
---|---|---|---|
#18+
Если коротко. То использована возможность брать значения по умолчанию из таблички на сервере, которые туда попадают с использованием хранимой процедуры запускаемой при запуске отчета. Подробнее. Есть значится два параметра мультивальюшных (если не мульты думаю даже проще все будет) Один это список подразделений, другой это список колонок которые есть в отчете. Список подразделений уже есть в базе и и грузится запросом в комбобокс (в параметрах есть возможность подгрузить допустимые значения с помощью запроса) Списка колонок в базе не было но пришлось его добавить (для защиты от некорректных данных - расскажу позже, может кто подскажет как бороться) Основное за что была зацепка - я обнаружил что если в качестве значений по дефолту использовать запрос и выводить с помощью него ТОЛЬКО! те значения которые должны быть выделены - то мы отлично получаем комбобокс с уже проставленными в соответствующих местах чекбоксами, причем отчет если заданы оба параметра запускается ничего не спрашивая. Правда возникла Проблема. Если в запросе по дефолту появляется какое то левое название не входящее в изначальных список значений, то дефолт рушится весь напрочь. ТО есть в запросе могут присутствовать ТОЛЬКО допустимые значения. Защиту - то есть гарантию корректности значений сделал просто, через In (select fldname from......) но для этого список колонок пришлось загнать в отдельную таблицу потому как его не удалось вытянуть из самого комбобокса чтобы красиво и в запросе использовать. если кто знает как, поделитесь. Хотя и в подобной таблице есть свои маленькие плюсы. Но в принципе эту защиту вообще можно не делать. - появление левых значений в той табличке где мы будем хранить деолфты маловероятны (ну допустим колонку из отчета удалили или подразделение сократили/переименовали а в дефолтах она осталась еще) да и одноразовы - пользователь переставит галочки заново и все будет отлично работать до следующего изменения набора допустимых значений. Итого что пока имеем. 1 запросы которые заполняют комбобоксы допустимыми значениями 2 запросы которые МОГУТ (пока только могут) проставлять в комбобоксах галочки в нужных местах. теперь займемся проставлением галочек. организуем на базе табличку в которой будем хранить значения параметров можно и собственно позже сделаю организовать несколько табличек для того чтобы обеспечить возможность каждому юзеру иметь свои собственные настройки для каждого из используемых отчетов, и при этом не иметь избыточности в таблице. Но это уже как то сам хочет-решает для себя. Я для демонстрации возьму вааще самый минимум. т.е. три колонки первичный ключ ID, код параметра PrmID и значение параметра PrmValue - естественно у одного параметра может быть несколько значений. Сначала ручками заполним эту таблицу значениями из списка возможных. запрос для получения значений по дефолту выглядеть будет примерно так select Prmvalue from Tbl where PrmId=1 and PrmValue in (select DepName from Departments) (код параметра зададим сами) запустим отчет - увидим проставленные в нужных местах галочки (рядом с теми значениями что в нашей новой таблице указали) теперь надо организовать их изменение. тут на помощь придет хранимая процедура. в отчете ее опишем как отдельный dataset указав что это хранимка. Имя процедуры указываем БЕЗ параметров. параметры вводим в отдельной вкладке. Я пытался и просто в тексте запихать ее имя с параметров, но не получалось нормально передать в нее список значений параметров. А если в отдельной вкладке то пишешь просто @DepList и все само списком передается. Этот датасет кстати как то отдельно запускать не надо - сам запускается - причем уже после того как параметры определены. Итак - запихали в отчет имя хранимки. Что надо будет туда передать что надо сделать в ней. передать туда минимум это код параметра и список его значений (еще можно передать код отчета и имя пользователя, но это позже организую) кстати я не стал париццо и для каждого параметра благо их не десяток завел в отчете датасет - код параметра в нем прописал статично а список значений как @имяпараметра. Это позволяет не делать никаких программных движений для передачи хранимке нужных входных значений - все делается само. Итого данные мы передали - придут они в хранимку в виде целого числа, и текстовой строки через запятую где перечислены все значения этого параметра. удаляет из таблицы ВСЕ значения которые там лежат для этого параметра Строчку парсим внутри хранимки (разбиваем ее на значения) и сохраняем ее в виде одно значение - одна строка. Вуаля. все готово. Что теперь будет происходить 1 запускаем отчет на формирование 2 запросами поднимаются возможные значения параметров и заполняются комбобоксы 3 из нашей таблички поднимаются значения выбранные в прошлый раз - отсекается возможный мусор 4 проставляются значения по дефолту 5 выполняется "холостой" запуск зранимой процедуры сохранения значений (холостой потому что запишет тоже самое что там и было) 6 отчет выполнится без запроса параметров (если все по дефолту проставлены) используя автоматически проставленные дефолты Если пользователю нужен другой набор значений для параметров - он выбирает в комбобоксах новые значения - рефрешит отчет и в это время выполняется хранимая процедура которая сохраняет нововыбранные значения в в нашу табличку. В следующий раз отчет откроется уже с ними. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2012, 11:41 |
|
Восстановление в SSRS 2008 Значений пар-ров выбранных при предыдущем запуске (СДЕЛАНО!)
|
|||
---|---|---|---|
#18+
Ну и естественно мне удалось культурно прятать колонки отчета ориентируясь на их имена, кроме той которая критерий группы ... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2012, 11:48 |
|
Восстановление в SSRS 2008 Значений пар-ров выбранных при предыдущем запуске (СДЕЛАНО!)
|
|||
---|---|---|---|
#18+
В MSRS 2005 решал подобную задачу с помощью следующей ХП Код: 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. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2012, 14:45 |
|
|
start [/forum/topic.php?fid=31&msg=38029399&tid=1534201]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
27ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
others: | 286ms |
total: | 406ms |
0 / 0 |