Agregatne funkcije
Agregatne funkcije
U većini slučajeva grupni izvještaji trebaju prikazati neke sažetke informacija (kao što su: “ukupno grupe”, “broj elemenata grupe” itd). FastReport pruža agregatne funkcije za izračunavanje agregatnih vrijednosti preko nekog raspona podataka.
Agregatne funkcije su:
Funkcija |
Opis |
SUM |
vraća ukupno izraza |
MIN |
vraća minimalnu vrijednost izraza |
MAX |
vraća maksimalnu vrijednost izraza |
AVG |
vraća prosječnu vrijednost izraza |
COUNT |
vraća broj redaka (redova) u rasponu podataka |
Sintaksa svih agregatnih funkcija (osim COUNT) slična je onoj funkcije SUM:
SUM(izraz, bend, zastavice)
SUM(izraz, bend)
SUM(izraz)
Parametri su:
izraz – izraz koji se treba izračunati
bend – naziv podatkovnog benda unutar kojeg se izračunava
zastavice – bitno polje, s vrijednostima
1 : uključiti nevidljive bendove u izračun
2 : akumulirati agregat kao tekući ukupak
(ne resetirati agregat kada se trenutni raspon podataka resetira)
3 : (oba prethodna opcija)
Izraz je jedini obavezni parametar, ostala dva su opcionalna. Ipak, kako bismo izbjegli greške, preporučuje se da se parametri benda uvijek navedu.
Agregatna funkcija “COUNT” ima sljedeću sintaksu:
COUNT(bend, zastavice)
COUNT(bend)
gdje parametri imaju isto značenje kao gore.
Postoji opće pravilo za sve agregatne funkcije: agregat se može izračunati samo preko podatkovnog benda i može se koristiti samo u podnožju tog benda, koje može biti jedno od: podnožje, podnožje stranice, podnožje grupe, podnožje stupca ili podnožje izvještaja (sažetak benda).
Kako rade agregatne funkcije? Pogledat ćemo to koristeći naš primjer grupnog izvještaja. Dodajmo neke nove elemente u izvještaj:

Polje Grupa.“ItemsTotal” u podatkovnom bendu prikazuje trenutni ukupak narudžbe. Postavite “Tekst” objekt u podnožje grupe koje sadrži agregat SUM prikazan gore. Prikazat će ukupno svih narudžbi koje je dao određeni kupac. Koristeći kalkulator, možemo provjeriti da je rezultat točan:

Agregatne funkcije rade ovako: prije ispisivanja izvještaja, FastReport skenira sadržaj “Tekst” objekta kako bi pronašao bilo koje agregatne funkcije. Pronađeni agregati su povezani s podatkovnim bendovima u njihovim parametrima (u našem primjeru “SUM” je povezan s “MasterData1” bendom). Tijekom ispisa izvještaja (kada se prikazuje podatkovni bend) izračunavaju se vrijednosti agregata povezanih s njim. U našem slučaju vrijednosti polja Grupa.“ItemsTotal” se akumuliraju. Kada se ispiše podnožje grupe koje prikazuje agregat, vrijednost agregata se resetira na nulu, a ciklus se ponavlja za sljedeću grupu, i tako dalje.
Koja je svrha opcionalnog parametra “Zastavice” u agregatnim funkcijama? Izvještaji mogu imati neke, ili sve, podatkovne bendove skrivene. Međutim, možda ćemo trebati izračunati agregate preko svih podatkovnih bendova, bilo vidljivih ili ne. U našem primjeru, postavite “Vidljivo” svojstvo podatkovnog benda na false, tako da spriječite njegovo prikazivanje. Da bismo i dalje uključili ovaj skriveni podatkovni bend u izračune, moramo postaviti treći, opcionalni parametar u pozivu funkcije na broj 1, tj.:
[SUM(<Group."ItemsTotal">,MasterData1,1)]
To proizvodi izvještaj koji izgleda ovako:

Kada je vrijednost parametra “Zastavice” postavljena na 2, vrijednost agregata se ne resetira odmah nakon što se prikaže: agregat postaje “tekući” izračun za svaki uzastopni ispis. Promijenimo poziv funkcije kao što je ovdje prikazano:
[SUM(<Group."ItemsTotal">,MasterData1,3)]
Vrijednost “3” je bitna kombinacija “1” i “2”, što znači da trebamo uključiti nevidljive bendove, bez resetiranja ukupka nakon svake grupe. Kao rezultat, imamo:

Ako postoji uvjet za vidljivost u događaju "OnBeforePrint" benda, zastavice nemaju učinak.