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

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
Laser Game Ostrava

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

Google       Google       3. 2. 2014       20 647×

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 Otevřené bankovnictví usnadní život nejen jednotlivcům, ale i firmám.

Otevřené bankovnictví usnadní život nejen jednotlivcům, ale i firmám.

Většina lidí by ráda obsluhovala své bankovní účty z jednoho místa. Díky evropské směrnici o platebních službách PSD2 by se brzy mohlo jednat o realitu. Některé tuzemské banky již služby takzvaného otevřeného bankovnictví umožňují, nejpozději od září by měly svá API rozhraní zpřístupnit vývojářům třetích stran. To otevírá prostor pro fintech firmy a start-upy, ale třeba i vývojáře ERP a fakturačních systémů, kteří by díky propojení svých produktů s bankami významně ulehčili klientům při správě financí.

Reklama
Reklama
Obrázek ke článku Velké srovnání TOP e-shopových řešení!

Velké srovnání TOP e-shopových řešení!

Předmět případové studie je ​středně velký e-shop​ s počtem produktů do 5 000, který chce expandovat na slovenský trh a potřebuje ​druhou jazykovou mutaci v eurech ​na vlastní doméně.

Výběr vhodného systému závisí na mnoha aspektech a měl by být pečlivě zvážen na základě potřeb a konkrétních požadavků plánovaného nebo migrovaného e-shopu.

Obrázek ke článku Master Data Management a jak nám pomůže

Master Data Management a jak nám pomůže

Master Data (česky také kmenová data) jsou data sdílená napříč různými systémy, nemění se příliš často a netransakční. Jedná se o informace o obchodních partnerech, produktech, vlastních pracovnících. Objednávky, faktury, účetní zápisy do této oblasti nespadají.

Obrázek ke článku Startup DoDo zajistí městskou logistiku pro RunCzech

Startup DoDo zajistí městskou logistiku pro RunCzech

Startup DoDo se stává důležitým partnerem RunCzecha na významných běžeckých závodech včetně 25. ročníku Volkswagen Maratonu Praha se bude starat o logistické zázemí. Lídr v oblasti městské logistiky bude mimo jiné zásobovat občerstvovací stanice a pomůže rovněž se zajištěním televizních přenosů ze závodů.

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