Передача параметрів у звітах Reporting Services

Поки готується докладний огляд функціоналу MS Datazen і Pyramid Analytics, ми вирішили розмістити невелику статтю за рішенням локальної задачі для SQL Server Reporting Services.

Нещодавно, при створенні звітів в РСР зіткнулися з таким завданням:
необхідно створити два пов'язаних звіт так, щоб можна було перейти з основного звіту в допоміжний, а з допоміжного повернутися в основний з передачею параметрів.
Обмеження:
основний звіт спочатку завантажується зі значеннями параметрів за замовчуванням, а всі можливі значення обмежені набором запиту.

Для більшої ясності наведемо схему передачі параметрів: основний звіт (Main Report) має параметр рік ( Year) зі значенням за замовчуванням – 2013 рік і можливими значеннями – історія за 2 попередніх роки 2011-2013, і допоміжний звіт (Detalisation).



Спочатку спробували вирішити завдання в лоб: створити в Main Report параметр Year зі значенням за замовчуванням CurrentYear (зараз не вдаватимемося в подробиці з якого саме запиту отримую це значення і з якого запиту — допустимі значення) та з допустимими значеннями з набору Years. При переході з Main Report Detalisation дію налаштовується як перехід у звіт з параметром Year. Повернення із звіту Detalisation в Main Report налаштовується теж як дію з переходом у звіт з параметром Year. Але ось тут Reporting не спрацьовує – у Year вже є список допустимих значень, що задається набором.

І прийшло в голову таке рішення цієї задачі: створити додатковий параметр, у якого не буде строго заданий набір допустимих значень, і у нього передавати значення параметра при поверненні з допоміжного звіту.
Далі наведу покроковий опис цього рішення.
1. Для демонстрації створю наступний проект:
a. DataSource: DataSource;
b. DataSets: CurrentYear, Years;
c. Reports: Main Report, Detalisation.



2. В Main Report створюємо параметр Year зі значенням за замовчуванням з набору CurrentYear



І без допустимих значень



3. Далі створюємо параметр @YearMain зі значенням за замовчуванням = Year



І допустимими значеннями з набору Years



4. У звіті створюємо елемент, при натисканні на який буде відбуватися перехід в допоміжний звіт. Ми зробили текстове поле. У властивостях налаштовуємо Дія (Action) як перехід у звіт (Go To Report) Detalisation з передачею параметра @YearDetalisation = @YearMain



Робота із запитами в звіті Main Report ведеться з параметром @YearMain



5. Тепер переходимо до звіту Detalisation. Створюємо параметр @YearDetalisation без значень за замовчуванням і без допустимих значень.

6. Створюємо елемент для переходу – нехай це знову буде текстове поле. Налаштовуємо Дію як перехід у звіт Main Report з передачею Year = @YearDetalisation



Настав час подивитися, що вийшло. При завантаженні основного звіту завантажився поточний рік. У параметрі Year бачимо 2013 рік. У реальному звіті цей параметр буде прихований для користувача.



У параметрі @YearMain для вибору надано тільки встановлений набір значень:



Виберемо 2012 рік та перебудуємо звіт (кнопка View Report або Переглянути звіт). Як видно, значення параметра Year не змінилося, а значення параметра @YearMain, з якому і ведеться робота у самому звіті змінилося:



Перейдемо до допоміжного звіт:



Тепер повернемося в основний звіт:



Ура, значення року збереглося, як це і було потрібно.
Якщо завдання стосується передачі параметра з кількома значеннями (multivalue), то необхідно зробити наступним чином. В основному звіті створити параметр з можливістю мати кілька значень. При налаштуванні дії для переходу в допоміжний звіт необхідно вказати =Join(Parameters!Years.Value, ", "). У допоміжному звіті відповідний параметр вже буде текстовим, з єдиним можливим значенням. При поверненні в основний звіт при передачі параметра необхідно вказати =Split(Parameters!Years.Value, ", ").

Сподіваюся, кому-небудь це завдання стане в нагоді і допоможе в житті.

У наступній статті ми розглянемо рішення Pyramid Analytics і Datazen (пройдемо всі етапи, від підключення до кубу та інших джерел до створення звіту)
«Піраміда» розглядається компанією Microsoft як рішення для великого бізнесу з корпоративного сегмента і Datazen, рішення для малого і середнього бізнесу.

До речі на даний момент ми активно шукаємо людей на дуже цікаві і великі BI проекти (посилання на вакансії нижче):

1. Аналітик-розробник BI

2. Архітектор BI

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.