![]() |
Нетрадиционное использование Microsoft Reporting ServicesИсточник: habrahabr badun1
Исторически сложилось так, что MS SSRS выбирался руководством компаний в которых я работал/ю как средство построения корпоративной отчетности. Конечно-же, чаще всего он не выбирался, а доставался в комплекте с MS SQL Server'ом. А так как он уже есть, то его нужно использовать и чаще всего не по назначению, а как придется. Поэтому и приходилось использовать Reporting Services для не совсем тривиальных задач. Под катом несколько вариантов такого применения.
1. SSRS как GUI или "Сделай мне кнопочки"Реализация SSRS через Action Property объекта. ![]() c переходом, в зависимости от требований либо на другой отчет(Go to report при необходимости, с передачей параметров), либо на закладку в текущем отчете(Go to bookmark), либо на ссылку(Go to URL). Рисование кнопочек - отдельная тема. В моем случае они эволюционировали:
Добавим кнопочкам проверку в лучших традициях продуктов о Microsoft "А вы уверены? Точно?" Так как по умолчанию SSRS этого не умеет, будем использовать javascript. Добавим в пункт Properties-> Action-> Go to URL строку: ="javascript:var check=confirm('Do you really want to process all the data? \n \nPlease do not close the browser while executing.'); if (check == true) {window.open('http://localhost/Reportserver?%2fTarget_Report&rs:Command=Render','_self')}" Что яваскрипт умеет в связке с SSRS можно найти в гугле( alert, User Prompt, confirmations, open new window, injections, пр). Да, Javascript не будет отрабатывать в Visual Studio, проверять работоспособность придется в браузере. Так же присутствует специфическое решение - ![]()
2. SSRS как ПрогрессбарПрогрессбаром будет служить обычный Bar Chart, слегка подкорректированный ![]()
Теперь задаем свойством отчета Report-> AutoRefresh минимально возможное значение автообновления до тех пор пока наш прогрессбар не доберется до 100% =IIF(Fields!_Значение_.Value <> 1,1,0) Ну и наконец, добавляем из пункта 1 кнопочку Далее, которая будет видна (TextBox Properties -> Visibility) только после того как наш прогрессбар дойдет до 100% =IIF(Fields!_Значение_.Value <> 1,True,False)
3. SSRS как Онлайн мониторВ данном случае был использован обычный линейный график с автообновлением каждую секунду для отображения на большом экране (телевизоре) статистики загрузки колл-центра, кол-ва текущих звонков, агентов и пр. Стоит заметить что генерация самого отчета SSRS должна быть многим менее 1 сек, т.е. отчет должен быть легким, иначе автообновление будет постоянно висеть на значке ![]()
4. SSRS как Интерфейс для постройки графиков"Не могу построить в екселе Waterfall Chart, сделай что-нибудь." В данном случае у пользователя вызывало затруднение построение графика типа Водопад (Waterfall Chart) в екселе 2007. В интернетах много вариаций на тему построения данного графика с помощью SSRS, если будет интересно, могу привести детальную пошаговую инструкцию. Отличием данного примера было неограниченное количество начальных-промежуточных-конечных значений, которые не должны участвовать в агрегации. ![]() Если тема будет интересна, могу добавить несколько примеров использования связки MS SQL Server + SSRS в качестве User driven ETL. |