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

 
Hledat
Moderní platforma pro vytvoření vašeho nového webu – Wix.com.
Nyní už můžete mít web zdarma.
Vybavení pro Laser Game
Spuštěn Filmový magazín
Laser Game Brno

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

Google       Google       3. 2. 2014       19 455×

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 SODAT vidí budoucnost datové bezpečnosti ve strojovém učení

SODAT vidí budoucnost datové bezpečnosti ve strojovém učení

Firmy chrání svá citlivá data často nedostatečně. Podle průzkumu společnosti SODAT se v minulém roce setkalo až 80 % z nich s bezpečnostním incidentem ztráty nebo úniku dat. Jedna z pilotních firem, která testovala novou verzi řešení SODAT Protection & Analytics 2.0pro bezpečností analýzu a monitoring dat díky novince zjistila, kdo z disku smazal důležité výkresy a mohla na incident včas reagovat.

Reklama
Reklama
Obrázek ke článku Kontrolujete pracovní emaily i na dovolené? 7 tipů odborníka, jak nepřijít o data

Kontrolujete pracovní emaily i na dovolené? 7 tipů odborníka, jak nepřijít o data

Letní měsíce jsou pro většinu zaměstnanců spojené s každoroční dovolenou. Z údajů Českého statistického úřadu vyplývá, že v roce 2017 podnikli Češi přes 13 milionů delších cest (tzn. s více než čtyřmi noclehy). Přitom právě na období července, srpna a září připadá více než 7,5 milionů z nich. Nicméně tradiční představu o dovolené jako o čase, kdy má práci na starost někdo jiný, Češi boří. 

Obrázek ke článku 10 SEO mýtů, které už nemusíte v roce 2018 řešit

10 SEO mýtů, které už nemusíte v roce 2018 řešit

„Kolik má být na stránce klíčových slov?“, „Nemáš vyplněný meta tag keywords, to nebude fungovat.“, „Katalogy jsou mrtvý“. Také jste už slyšeli některé z těchto otázek? Pojďme si na ně konečně jednou provždy odpovědět.

Obrázek ke článku Trend Micro pomohlo usvědčit viníky v mezinárodním případu Scan4You

Trend Micro pomohlo usvědčit viníky v mezinárodním případu Scan4You

Společnost Trend Micro Incorporated, globální lídr v oblasti kybernetické bezpečnosti, oznámila podrobnosti o své úzké spolupráci s FBI v případu Scan4You. Trend Micro se podílelo na identifikaci osob, které byly spojeny se službou Scan4You Counter Antivirus, což vedlo k jejich odsouzení.

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032018 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý