Článek: AN0001880Aktualizováno:: 03.10.2018
V této kapitole si ukážeme, jak vytvořit přehled sumárních dat s možností zobrazení detailu záznamů, z nichž sumární data sestávají.
Pokud potřebujeme souhrnná data z některé třídy, použijeme dotaz s klauzulí GROUP BY. V níže uvedeném příkladu nás bude zajímat počet otevřených incidentů po jednotlivých řešitelích. Data jsou uložena ve třídě s kódem incident, status incidentu je odkazem do třídy incident-status a řešitel je odkazem do interní třídy person.
Cílem je, aby výsledný dotaz uváděl v řádcích řešitele a ve sloupcích nové incidenty, otevřené incidenty a celkový počet incidentů. Zároveň si ukážeme, jak zajistit, aby klikem na souhrnná data v dotazu uživatel mohl zobrazit rozpad na jednotlivé záznamy, z nichž je souhrn vytvořen.
Vytvoříme dotaz, který kromě jména řešitele bude vracet i id daného řešitele (id uživatele ObjectGears). Tuto informaci použijeme při tvorbě odkazu na rozpad incidentů.
Toto je SQL definice dotazu:
SELECT ai.id pid, ai.fullname,
SUM( status_New) status_New,
SUM( status_Open) status_Open, sum( status_New) +
SUM( status_Open) Total from
(
SELECT p.id, p.fullname,
CASE WHEN i.status = 1 THEN 1 ELSE 0 END status_New,
CASE WHEN i.status = 2 THEN 1 ELSE 0 END status_Open FROM {{: class.incident :}} i
INNER JOIN {{: class.incident-status :}} ins ON ins.id = i.status
INNER JOIN person p ON p.id = i.solver
WHERE i.status in (1, 2) AND
i.deleted IS NULL
) ai
GROUP BY ai.id, ai.fullname
Výsledný dotaz pak bude vypadat takto:
Zobrazíme sloupce dotazu a provedeme tyto úpravy:
- Sloupec s id uživatele zobrazovat nechceme. Otevřeme tedy detail sloupce pid a nastavíme mu vlastnost Zobrazit v seznamu na Nezaškrtnuto.
- Názvy sloupců dotazu chceme zobrazovat dle lokalizace uživatele. Otevřeme tedy detail příslušných sloupců dotazu a nastavíme nové názvy v příslušných jazykových variantách.
- Jméno řešitele by mělo sloužit jako odkaz na rozpad záznamů. Oteřeme tedy detail sloupce solver a nastavíme tyto vlastnosti:
- Použít jako odkaz: Zaškrtnuto
- Formát odkazu:
'./Datas.aspx?CId=430&filter=solverEQ' + Cstring(Column('pid')) + '~AND(statusEQ1~ORstatusEQ2~)'
- Umožnit otevření odkazu v seznamu: Zaškrtnuto
Výše uvedený Formát odkazu je použit pro třídu id 504, která obsahuje sloupec id 6223 (solver) a 6224 (status). Dokumentace k syntaxi filtru je popsána v kapitole URL filtr.
Upravený dotaz pak bude vypadat takto:
Kliknutí na jméno uživatele následně povede na otevření seznamu incidentů se zafiltrováním na daného uživatele a stavy incidentů.