Poročilo z skupinami
Poročilo z skupinami
V prejšnjem primeru smo sestavili poročilo z dvema ravnema na podlagi podatkov iz dveh tabel. Drugo poročilo, ki izgleda enako, lahko sestavimo v FastReport, tokrat na podlagi niza podatkov, pridobljenih iz združene poizvedbe.
Za to je potrebna SQL poizvedba, ki vrne podatke iz obeh tabel in je razvrščena na določen način.V našem primeru bosta tabeli združeni na polju " acSubject" iz strank in "acConsignee" iz tabele naročil.
Poizvedba bi lahko bila: izberi
* iz
tHE_SetSubj, tHE_Order kjer
tHE_SetSubj.acSubject = tHE_Order.acConsignee razvrsti po
tHE_SetSubj.acSubject
Vrstica "razvrsti po" je potrebna za razvrščanje zapisov po polju “acSubject” (stranka).
Kako lahko oblikujemo večnivojsko poročilo z uporabo teh podatkov? Obstaja posebna skupina, “Glava skupine”. Za skupino je določena pogoj (vrednost polja baze podatkov ali izraz); skupina se izpiše vsakič, ko se vrednost pogoja spremeni. Naslednji primer to ponazarja.Ustvarimo nov projekt v Delphiju in postavimo komponento “TfrxDlDBQuery”. Nastavimo lastnosti nove komponente z imenom " DlDBQuery1"
kotje prikazano tukaj:
SQL =
'izberi *
iz tHE_SetSubj, tHE_Order
kjer tHE_SetSubj.acSubject = tHE_Order.acConsignee
razvrsti po tHE_SetSubj.acSubject'

Uporabniško ime = 'Skupina'

Dodajte “Glavo skupine” v poročilo. Nastavite pogoj (v tem primeru podatkovno polje “Group.acSubject”) v urejevalniku “Glave skupine”:
Prav tako povežite podatkovno skupino z virom podatkov “Skupina” in razporedite nekatere objekte, kot je prikazano (opomba: glava skupine mora biti postavljena nad podatkovno skupino): “Glava skupine” se izpiše le, ko se vrednost polja, s katerim je povezana, spremeni. V nasprotnem primeru se prikaže podatkovna skupina, povezana z nizom podatkov “Skupina”. Če to poročilo primerjamo s poročilom tipa glavni-podrobnosti, ki je bilo sestavljeno prej, je očitno, da številke naročil sploh niso razvrščene. To lahko enostavno popravimo z spremembo klavzule 'razvrsti po' v SQL poizvedbi:
izberi *
iz tHE_SetSubj, tHE_Order
kjer tHE_SetSubj.acSubject = tHE_Order.acConsignee

razvrsti po
- tHE_SetSubj.acSubject, tHE_Order.acKey
- Poročila z gnezdenimi skupinami lahko oblikujemo na podoben način. Globina gnezdenja skupin je neomejena. Poročila, ki uporabljajo skupine, imajo nekatere prednosti pred poročili tipa glavni-podrobnosti:
- celotno poročilo potrebuje le en niz podatkov (poizvedbo)
- število nivojev grupiranja podatkov je neomejeno
razvrščanje podatkov postane mogoče