Agregatne funkcije
Agregatne funkcije
V večini primerov morajo skupinska poročila prikazati nekatere povzetke informacij (kot so: "skupna vsota skupine", "število elementov skupine" itd.). FastReport zagotavlja agregatne funkcije za izračun agregatnih vrednosti čez nek časovni razpon podatkov.
Agregatne funkcije so:
Funkcija |
Opis |
SUM |
vrne skupno vrednost izraza |
MIN |
vrne minimalno vrednost izraza |
MAX |
vrne maksimalno vrednost izraza |
AVG |
vrne povprečno vrednost izraza |
COUNT |
vrne število vrstic (vrstic) v časovnem razponu podatkov |
Sintaksa vseh agregatnih funkcij (razen COUNT) je podobna sintaksi funkcije SUM:
SUM(izraz, pas, zastavice)
SUM(izraz, pas)
SUM(izraz)
Parametri so:
izraz – izraz, ki ga je treba izračunati
pas – ime podatkovnega pasu, v katerem se izračun izvaja
zastavice – bitno polje, z vrednostmi
1 : vključite nevidne pasove v izračun
2 : akumulirajte agregat kot tekočo skupno vrednost
(ne ponastavite agregata, ko se trenutni časovni razpon podatkov ponastavi)
3 : (obe prejšnji možnosti)
Izraz je edini obvezni parameter, preostala dva sta neobvezna. Kljub temu, da bi se izognili napakam, je priporočljivo, da so parametri pasu vedno navedeni.
Agregatna funkcija "COUNT" ima naslednjo sintakso:
COUNT(pas, zastavice)
COUNT(pas)
kjer imajo parametri enak pomen kot zgoraj.
Obstaja splošno pravilo za vse agregatne funkcije: agregat se lahko izračuna le čez podatkovni pas in se lahko uporablja le v nogi tega pasu, ki je lahko ena od: noga, noga strani, noga skupine, noga stolpca ali noga poročila (povzetni pas).
Kako delujejo agregatne funkcije? To bomo pogledali z uporabo našega primera skupinskega poročila. Dodajmo nekaj novih elementov v poročilo:

Polje Skupina."ItemsTotal" v podatkovnem pasu prikazuje trenutno skupno vrednost naročila. V skupinsko nogo postavite objekt "Besedilo", ki vsebuje agregat SUM, prikazan zgoraj. Prikazal bo skupno vrednost vseh naročil, ki jih je oddal določen kupec. Z uporabo kalkulatorja lahko preverimo, da je rezultat pravilen:

Agregatne funkcije delujejo tako: pred izhodom poročila FastReport pregleda vsebino objekta "Besedilo", da najde morebitne agregatne funkcije. Najdene agregate povežejo s podatkovnimi pasovi v njihovih parametrih (v našem primeru je "SUM" povezan s pasom "MasterData1"). Med izhodom poročila (ko je podatkovni pas prikazan) se izračunajo vrednosti agregatov, povezanih z njim. V našem primeru se vrednosti polja Skupina."ItemsTotal" akumulirajo. Ko je izhodna noga skupine, ki prikazuje agregat, izhodna, se vrednost agregata ponastavi na nič, in cikel se ponovi za naslednjo skupino, in tako naprej.
Kako je namen neobveznega parametra "Zastavice" v agregatnih funkcijah? Poročila imajo lahko nekatere ali vse podatkovne pasove skrite. Morda pa bomo morali izračunati agregate čez vse podatkovne pasove, ne glede na to, ali so vidni ali ne. V našem primeru nastavite lastnost "Vidno" podatkovnega pasu na false, da preprečite njegovo prikazovanje. Da bi še vedno vključili ta skriti podatkovni pas v izračune, moramo v klicu funkcije nastaviti tretji, neobvezni parameter na številko 1, tj.:
[SUM(<Group."ItemsTotal">,MasterData1,1)]
To ustvari poročilo, ki izgleda tako:

Ko je vrednost parametra "Zastavice" nastavljena na 2, se vrednost agregata ne ponastavi takoj po tem, ko je prikazana: agregat postane "tekoči" izračun za vsak zaporedni izhod. Spremenimo klic funkcije, kot je prikazano tukaj:
[SUM(<Group."ItemsTotal">,MasterData1,3)]
Vrednost "3" je bitna kombinacija "1" in "2", kar pomeni, da moramo vključiti nevidne pasove, ne da bi ponastavili skupno vrednost po vsaki skupini. Kot rezultat imamo:

Če obstaja pogoj za vidnost v dogodku "OnBeforePrint" pasu, zastavice nimajo učinka.