Agregatne funkcije
Agregatne funkcije
U većini slučajeva grupni izvještaji trebaju prikazati neku sažetu informaciju (kao što su: “ukupno grupe”, “broj elemenata grupe” itd). FastReport pruža agregatne funkcije za izračunavanje agregatnih vrijednosti preko nekog opsega podataka.
Agregatne funkcije su:
Funkcija |
Opis |
SUMA |
vraća ukupno izraza |
MIN |
vraća minimalnu vrijednost izraza |
MAX |
vraća maksimalnu vrijednost izraza |
PROSJEK |
vraća prosječnu vrijednost izraza |
BROJ |
vraća broj redova (linija) u opsegu podataka |
Sintaksa svih agregatnih funkcija (osim BROJ) slična je onoj funkcije SUMA:
SUMA(izraz, bend, zastavice)
SUMA(izraz, bend)
SUMA(izraz)
Parametri su:
izraz – izraz koji treba izračunati
bend – naziv podatkovnog benda unutar kojeg se izračun vrši
zastavice – bitno polje, sa vrijednostima
1 : uključiti nevidljive bendove u izračun
2 : akumulirati agregat kao tekući ukupni iznos
(ne resetovati agregat kada se trenutni opseg podataka resetuje)
3 : (oba prethodna opcija)
Izraz je jedini obavezni parametar, ostala dva su opcionalna. Ipak, da bi se izbjegle greške, preporučuje se da se parametri benda uvijek navedu.
Agregatna funkcija “BROJ” ima sljedeću sintaksu:
BROJ(bend, zastavice)
BROJ(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 kolone ili podnožje izvještaja (sažeti bend).
Kako funkcionišu agregatne funkcije? Pogledaćemo to koristeći naš primjer grupnog izvještaja. Dodajmo neke nove elemente u izvještaj:

Polje Grupa.“ItemsTotal” u podatkovnom bendu prikazuje trenutni ukupni iznos narudžbe. Postavite “Tekst” objekat u podnožje grupe koje sadrži agregat SUMA prikazan iznad. Prikazaće ukupno svih narudžbi koje je dao dati kupac. Koristeći kalkulator, možemo provjeriti da je rezultat tačan:

Agregatne funkcije rade ovako: prije nego što se izveze izvještaj, FastReport skenira sadržaj “Tekst” objekta da pronađe bilo koje agregatne funkcije. Pronađeni agregati su povezani sa podatkovnim bendovima u njihovim parametrima (u našem primjeru “SUMA” je povezana sa “MasterData1” bendom). Tokom izvoza 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 podnožje grupe koje prikazuje agregat izveze, vrijednost agregata se resetuje 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 morati izračunati agregate preko svih podatkovnih bendova, bez obzira na to da li su vidljivi ili ne. U našem primjeru, postavite “Vidljivo” svojstvo podatkovnog benda na false, tako da spreč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.:
[SUMA(<Grupa."ItemsTotal">,MasterData1,1)]
To proizvodi izvještaj koji izgleda ovako:

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

Ako postoji uslov za vidljivost u događaju "OnBeforePrint" benda, zastavice nemaju efekta.