Tvorba reportů v MS Reporting Services 2008, 4. díl – práce se skupinami
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama

Tvorba reportů v MS Reporting Services 2008, 4. díl – práce se skupinamiTvorba reportů v MS Reporting Services 2008, 4. díl – práce se skupinami

 

Tvorba reportů v MS Reporting Services 2008, 4. díl – práce se skupinami

Google       Google       3. 2. 2014       17 474×

Tímto dílem začíná část seriálu, která se bude věnovat uspořádání dat a reportům s komplexnějšími grafickými výstupy. Ukážeme si, jak v SSRS přidat do reportu skupiny, jak vytvářet jejich hierarchická uskupení a jak v rámci skupin provádět výpočty.

Reklama
Reklama

Občas je potřeba mít v reportu agregované hodnoty (sumace hodnot, počty prvků atd.) záznamů, které si jsou určitým způsobem podobné (zákazníci ze stejného města, zaměstnanci stejného oddělení, lidé narození v témže roce…), pro tento účel nabízí SSRS možnost vytváření skupin záznamů (groups).

Tato funkcionalita nám umožňuje záznamy v rámci tabulky seskupovat a tato seskupení následně „osadit“ např. společným záhlavím, zápatím, agregovanými hodnotami týkajícími se tohoto uskupení, případně tyto skupiny vzájemně vnořovat, a vytvářet tak hierarchické struktury záznamů.

Přidávání skupin

Seskupování si v této části seriálu vyzkoušíme na reportu, který bude obsahovat hierarchii oddělení společnosti AdventureWorks a zaměstnanců těchto oddělení. Report bude v základní formě obsahovat pouze seznam oddělení nejvyššího stupně hierarchie (v databázi označovaném jako skupina – jde o hrubé rozdělení, jako výroba, výzkum a vývoj, exekutiva apod.) a počet zaměstnanců, kteří v daném oddělení pracují. Uživatel si bude moci rozvinovat vybrané oddělení na podrobnější úroveň (v případě exekutivy tedy např. na oddělení lidských zdrojů, finanční oddělení atd.), případně na informace o jednotlivých zaměstnancích příslušného oddělení.

Příprava datasetu

Nejprve si opět vytvoříme dataset, který bude tvořit tělo reportu (parametry pro tentokrát vynecháme).

SELECT
dep.GroupName AS gr_name
,dep.Name AS dep_name
,per.FirstName + ' ' + (CASE WHEN per.MiddleName IS NULL THEN '' ELSE per.MiddleName + ' ' END) + per.LastName AS name
,em.JobTitle
,em.BirthDate
,edh.StartDate
FROM
HumanResources.Department AS dep
JOIN HumanResources.EmployeeDepartmentHistory AS edh ON dep.DepartmentID = edh.DepartmentID
JOIN HumanResources.Employee AS em ON edh.BusinessEntityID = em.BusinessEntityID
JOIN Person.Person AS per ON em.BusinessEntityID = per.BusinessEntityID
WHERE em.CurrentFlag = 1
AND YEAR(EndDate) IS NULL

Tvorba reportu

  1. Založíme novou tabulku (v záložce Design přetáhneme z panelu Toolbox na plátno s tělem reportu položku Table).
  2. Vytvoříme v ní čtyři sloupce (klikneme na záhlaví libovolného sloupce pravým tlačítkem myši, zvolíme Insert column a zvolíme, zda nový sloupec umístíme napravo nebo nalevo).
  3. Nadpisy a obsah sloupců upravíme tak, jak je tomu na obrázku níže:
  1. V panelu Row Groups ve spodní části okna klikneme pravým tlačítkem na položku Details a zvolíme volbu Add Group -> Parent Group:

Tím vyvoláme okno s popisem nové skupiny. Seskupování zaměstnanců budeme provádět podle názvu oddělení, u položky Group by tedy zvolíme z nabídky sloupec dep_name – přiřadíme zatím vytvořené sloupce z kroku 2 do nové skupiny. Vytvoření patičky skupiny zajistíme zaškrtnutím položky Add group footer.

  1. Do tabulky s obsahem reportu se přidal nový sloupec s položkami skupiny a v panelu Row Groups se nám vytvořila nová položka (skupina) dep_name.

Opakujte postup z předchozího kroku s touto skupinou pouze s tím rozdílem, že položce Group by přiřadíte hodnotu gr_name – tím do tabulky opět vložíme nový sloupec příslušející nové skupině (a v panelu Row Groups přibude řádek gr_name).

Náhled na report po přidání všech skupin

Report v této fázi bude zobrazovat data v seskupené podobě (bez použití GROUP BY v základním datasetu), s tím se nicméně nespokojíme – po spuštění reportu na nás vyskočí nepřehledné množství záznamů. To změníme tak, že jednotlivé skupiny uspořádáme do rozvinovacích polí. Díky tomu si bude moct uživatel zobrazit informace pouze vybraných skupin a oddělení.

  1. V panelu Row Groups vyvoláme pravým tlačítkem vlastnosti skupiny Details (položka Group Properties). Objeví se panel s vlastnostmi skupiny. V záložce Visibility zaškrtneme položku Display can be toggled by this report item a zvolíme sloupec dep_name. Skupina Details (sloupce z kroku 2) a položku When the report is initially run nastavíme na Hide. Tak budou součástí rozvinovacího pole položky ze skupiny dep_name – jejich výchozí podoba bude „zabalená“.
  1. Obdobně budeme postupovat u skupiny dep_name, svinování ale bude řízeno položkami sloupce gr_name.
  2. Nyní nastala chvíle pro přidání počtu zaměstnanců za jednotlivá oddělení, skupiny a celou firmu. Klikneme na záhlaví posledního řádku tabulky a zvolíme položku Insert Row -> Outside GroupBelow. Tím přidáme do tabulky nový řádek, který nebude spadat pod žádnou ze skupin. Podle obrázku popíšeme nový řádek a do polí patiček doplníme následující výrazy (Expression):

Pro patičku skupiny dep_name:

="Zaměstnanců v oddělení: " + CountRows().ToString()

A pro patičku skupiny gr_name:

="Zaměstnanců ve skupině: " + CountRows().ToString()

Do nově přidaného řádku přidáme výraz:

=CountRows()

Funkce CountRows() vrací počet řádků v daném uskupení (v našem případě jde o jednotlivá seskupení a celou tabulku). Funkce ToString() převádí její hodnotu na textový řetězec – bez ní by sloučení s předchozím textem výrazu nebylo možné.

  1. Barvy pozadí jednotlivých buněk nastavíme dle libosti nebo podle obrázku níže:

Vybereme bílá pole, klikneme pravým tlačítkem na libovolné z nich a vyvoláme nabídku TextBox Properites, kde v záložce Fill nastavíme Fill Color na výraz:

=iif( (RowNumber("DataSet1") Mod 2)=0,"White", "WhiteSmoke")

Funkce iif() má tři parametry – logickou podmínku, akci provedenou při splnění podmínky a akci při nesplnění podmínky. Tento výraz tedy kontroluje, zda je pořadí daného řádku dělitelné dvěma; pokud ano, je pozadí řádku vyplněno bílou barvou, v opačném případě světle šedou (barvy řádků se tedy střídají).
Výsledný report by měl jít rozvinovat tak, jak je tomu na obrázku:

Report po rozvinutí skupiny Quality Assurance a oddělení Document Control

Závěr

Ukázali jsme si jak v SSRS přidat do reportu skupiny, jak vytvářet jejich hierarchická uskupení a jak v rámci skupin provádět výpočty, aniž bychom zasahovali do kódu pro zdrojovou datovou sadu.

×Odeslání článku na tvůj Kindle

Zadej svůj Kindle e-mail a my ti pošleme článek na tvůj Kindle.
Musíš mít povolený příjem obsahu do svého Kindle z naší e-mailové adresy kindle@programujte.com.

E-mailová adresa (např. novak@kindle.com):

TIP: Pokud chceš dostávat naše články každé ráno do svého Kindle, koukni do sekce Články do Kindle.

4 názory  —  4 nové  
Hlasování bylo ukončeno    
4 hlasy
Google
Jakub v současné době pracuje jako BI specialista ve společnosti Tieto Czech. Mimo to se zajímá o databáze a dolování dat.
LinkedIn    

Nové články

Obrázek ke článku Dovozci baterií mění logistiku, letadlo nahrazuje námořní doprava

Dovozci baterií mění logistiku, letadlo nahrazuje námořní doprava

Dovozci baterií do mobilů či notebooků upouštějí od letecké přepravy zboží. V letošním roce plánují dovézt až 80 % produktů lodí. Přitom před 5 lety byla většina baterií do mobilních přístrojů dovezených do České republiky přepravována letadlem. Za proměnou způsobu transportu akumulátorů stojí zpřísnění pravidel pro leteckou přepravu, která přinášejí vyšší náklady i náročnou agendu.

Reklama
Reklama
Obrázek ke článku JIC otevírá největší digitální dílnu pro veřejnost v České republice

JIC otevírá největší digitální dílnu pro veřejnost v České republice

JIC otevírá první nonstop veřejně dostupnou digitální dílnu světového formátu s vybavením za 3 miliony korun. Dílnu může využívat po registraci kdokoliv. V  prostorách vzniknou prototypy produktů místních startupů, projekty kutilů a studentů i umělecká díla. Cílem dílny je zpřístupnit veřejnosti drahé přístroje a přitáhnout více podnikavých lidí k technickým oborům.

Obrázek ke článku Nový IT hráč na českém trhu

Nový IT hráč na českém trhu

V roce 2015 otevřela v Praze na Pankráci v budově City Tower své kanceláře společnost EPAM Systems (NYSE:EPAM), jejíž centrála se nachází v USA. Společnost byla založená v roce 1993 a od té doby prošla velkým vývojem a stále roste.

loadingtransparent (function() { var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true; po.src = 'https://apis.google.com/js/plusone.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s); })();
Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032017 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý