Ve 4. díle (Díl 4 – Vytváříme report v SSRS) jsme si připravili jednoduchý report, který zobrazuje data o prodejích. Report má formu jednoduché tabulky zobrazující výsledek datasetu, který jsme si připravili v minulých dílech. Slíbili jsme si, že nebudeme report moc komplikovat, ale jednu věc bychom udělat měli. Report, který zobrazuje pouze tabulku není pro uživatele příliš vyhovující v tom smyslu, že se nad ním nedá filtrovat. Tento článek bude zaměřen na to, jak udělat nastavení parametru v SSRS, které umožňuje filtrování výsledků.
Nastavení parametru filtrování v SSRS
Po posledním cvičení bychom měli mít připravený report s tabulkou jako na obrázku:
Nebudeme si zadání komplikovat a budeme chtít pouze 1 filtr nad Sloupcem “Rok” s tím, že se uživateli nabídne rozbalovací menu, ve kterém si bude moci vybrat rok, který chce zobrazit.
Vytvoření datasetu pro SSRS filtr
Každý filtr obsahuje nějakou nabídku hodnot. Seznam hodnot můžeme sepsat ručně tak, že napíšeme do filtru třeba roky 2015 a 2016. To ale není vůbec vhodné. Chceme totiž, aby byl report bezúdržbový. Často se v podniku staráte o desítky reportů a pokud nemáte tyto filtry dynamické, zabere vám opravdu mnoho času se o reporty starat a aktualizovat hodnoty.
Vytvoříme si proto dynamický dataset, který při filtru reportu načte seznam všech možných hodnot, které lze vybrat. Vzpomeňte si na díl, ve kterém jsme dělali dataset. K definici datasetu jsme použili script ad [1]. SQL dotaz pro dataset (Filtr Rok) bude vypadat logicky takto [2]. Výhoda je zřejmá, pokud by se uskutečnit prodej v roce 2017, filtr jej automaticky nabídne.
SQL dotaz zkopírujeme a vytvoříme si v reportu nový dataset [3], [4]
Definice parametru v Reporting Services
V momentě kdy máme připraven dataset pro filtr Rok, můžeme pokračovat nastavením parametru. Parametry se zakládají z karty Report data, položka Parameters, zvolíme Add parameter [5]. Na další obrazovce si parametr pojmenujeme a nastavíme datový typ Integer [6]. V dalším kroku klikneme na Available Values a zvolíme Get values from a query [7]. Následně potvrzením dokončíme nastavení parametru, po kliknutí na Preview po nás report vyžaduje vyplnit filtr rok [8].
Provázání filtru s hlavním datasetem
To, že jsme úspěšně nastavili parametr v reportu ještě neznamená, že na parametr reaguje hlavní dataset, který vrací Tržby po produktech. Provázání je potřeba nastavit. Není to vůbec těžké. Stačí editovat hlavní dataset a do SQL dotazu napsat do WHERE klauzule jednoduchou podmínku, která nám výsledek omezí podle toho co je zrovna vybráno ve filtru.
Na parametry se v Reporting services dá v SQL dotazu bez problému odkázat. Parametr v SQL dotazu definujeme přes @NazevParametru [9]. Potom klikneme na kartu Parameters a obě hodnoty provážeme jako na obrázku [10]
A je vymalováno, nastavení parametru v SSRS je hotové. Report by měl na filtr bez problémů reagovat.
Další pokračování bude zaměřeno na Deploy SSRS reportu na Report server, aby si ho mohli prohlédnout uživatelé – Díl 6 – Deploy reportu v SSRS
Zdravím Honzo,
musím Vám poděkovat. Pokoušel jsem se o parametry s dynamickými hodnotami druhý možná třetí den, dělal jsem vše podle návodů (v angličtině) ale nic nešlo. Poté jsem si řekl že zkusím návod od Vás a “je vymalováno” vše funguje jak má.
Nechápu v čem byla chyba zdá se mi to docela stejný postup každopádně opakování je matka moudrosti.
Ještě jednou díky!
PS: pokračujte v tom co děláte!
Díky! Tak hlavně že pomohlo. Kde byla chyba těžko říct…kde se často dělá chyba je že (i) parametr “Name” nesmí být s mezerou (ii) chyba provázání parametru na dataset (viz obr 10) (iii) pokud zadate možnost mit parametr s multiple values, tak je to jiná písnička…tam je to trochu složitější => parametr totiž podá do datasetu string s hodnotami oddělenými čásrkou “hodnota1, hodnota2″…já to dělám tak, že si připravím v sql funkci, která rozseká parametr na tabulku, kterou pak inner joinem přidám do hlavního skriptu a inner join se postará o omezení
Zkusím připravit nějaký další článek až bude čas
Zatím