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
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       22 172×

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 Konference: Moderní informační systémy podporují automatizaci

Konference: Moderní informační systémy podporují automatizaci

Současná situace v šíření onemocnění Covid-19 klade na řadu firem nové nároky a mnohé z nich jsou nyní více než kdy jindy závislé na nejmodernějších informačních technologiích. Proto i v oblasti podnikových informačních systémů vidíme rostoucí důraz na automatizaci nebo na důslednou integraci. Také o těchto trendech se bude mluvit na konferenci Firemní informační systémy, která se koná 24.9.2020 v pražském Kongresovém centru Vavruška na Karlově náměstí.

Reklama
Reklama
Obrázek ke článku Nebezpečí ukrytá v USB: z nuly na škvarek za pět sekund

Nebezpečí ukrytá v USB: z nuly na škvarek za pět sekund

Za cenu šesti dolarů lze celkem bez obtíží koupit nový, líbivě vyhlížející flash disk. Přidaná hodnota, které se vám spolu s ním dostane, už tak moc líbivá není. To, co se před pár sekundami tvářilo jako externí disk, se po připojení k počítači změní v důmyslné elektrické křeslo, které vaše zařízení v onen příslovečný škvarek promění za pár sekund. Cílovou skupinou pro koupi takových zařízení by mohli být záškodníci, kteří by tímto způsobem osnovali pomstu třeba vůči záletnému partnerovi. 

Obrázek ke článku Znalosti, dovednosti i prestižní titul MBA: Jde to i moderně a online

Znalosti, dovednosti i prestižní titul MBA: Jde to i moderně a online

Snad nikdy není špatná příležitost na investici do hodnotného vzdělání. Obzvlášť v případě, že absolvent dovede teoretické poznatky přetavit v praktické dovednosti, využitelné při řešení problémů i v komunikaci. Právě na to se specializuje studijní program MBA Řízení informačních technologií, vyučovaný na Business Institutu.

Obrázek ke článku Coding Bootcamp Praha: Obor IT krize nepoznamenala, žádaní jsou weboví vývojáři

Coding Bootcamp Praha: Obor IT krize nepoznamenala, žádaní jsou weboví vývojáři

Pandemie Covid-19 otřásla trhem práce v základech. Dopady krize pocítilo celkově až 45 % zaměstnanců. Není divu, že čím dál větší jistotu přináší obor IT. Ten zůstal krizí téměř nepoznamenán a při nutnosti začít dělat věci na dálku se ještě více ukázalo, jak moc mnohé firmy kvalitní IT potřebují. Do IT nyní přicházejí začátečníci, kteří v něm vidí lukrativní budoucnost a jistotu, ale i freelanceři a zaměstnanci z oborů zasažených krizí

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