Funkcije
Funkcije
U ovom poglavlju su objašnjene agregatne funkcije, funkcija GetForValue, SQLEXP i IIF. Funkcije, koje su napisane posebno za PANTHEON 5.5 i nema ih u standardnom FastReport-u smo obrazložili posebno u kategoriji Datalab Funkcije.
Pogledajte primere upotrebe funkcija u korisničkom priručniku
Agregatne funkcije
Agregatne funkcije su poznate iz SQL-a i to su:
SUM – suma
AVG – prosek
MAX – najveća vrednost
MIN – najmanja vrednost
COUNT – broj zapisa
Najlakše ih dobijamo tako, da sa alatnog reda sa objektima prenesemo na ispis objekat sa sistemskim tekstom
. Otvori se prozor kao na donjoj slici.

Slika 1 - Prozor za unos sistemske promenljive i agregatnih funkcija
Izaberemo Aggregate value i u padajućim menijima i potvrđenim poljima izaberemo željene vrednosti:
-
Agregatnu funkciju (Function).
-
Bend (Data band), na kojeg se odnsoi funkcija.
-
Dataset, koji je obično isti kao osobina DataSet izabranog benda.
-
Polje u tabeli ili upitu (DataField), kojeg želimo imati za argument funkcije. Kod funkcije COUNT je ta osobina bez značaja.
-
Da li uvažava podatke i ako je bend pas sakriven (Count invisible bands). Ova mogućnost se može uvažavati npr. kod ispisa zalihe, ako nas zanimaju samo grupne količine. Predstavlja vrednost 1 zadnjeg argumenta agregatnih funkcij.
-
Kumulativna suma (Running total). Ova osobina određuje, da li se količine (sume) prenose u sledeću grupu. Predstavlja vrednost 2 zadnjeg argumenta agregatnih funkcija.
-
U polje Izraz (Expression) možemo uneti željeni izraz bez srednje zagrade na početku i kraju izraza. MOžemo se pomagati tatserom fx, koji nam otvori ExpressionEditor, koji je zapravo DataTree.
Ukoliko u jednom objektu želimo ispisati izraz i spreman tekst ili više izraza, izaberemo Text i u unosno polje upišemo željeni tekst. U ovom primeru sa posebnim objektom nismo dobili ništa, jer je to potpuno isto kao ako bi pisali u običnom tekstualnom objektu.
U ovom prozoru možemo izabrati i sistemske promenljive, iako nisu na raspolaganju sve. Jednostavnije je da ih povlačemo preko DataTree (drvo sa podacima).

Kod svih funkcija je obavezan samo prvi argument.
Funkcija IIF
Funkcija IIF je slična uslovnom upitu if - then – else.
Zaglavlje funkcije:
function IIF(Expr: Boolean; TrueValue, FalseValue: Variant): Variant;
Funkcija GetFormValue
Funkcija GetFormValue vrati vrednost u objektu u prozoru programa. Njen argument je ime objekta u prozoru zajedno sa imenom prozora. Ako objekat ne postoji ili forma nije kreirana, funkcija vrati prazan niz.
Zaglavlje funkcije:
function GetFormValue(FormComponentName: String): Variant;
Funkcija SQLExp
Jedini parametar funkcije SQLExp je SQL upit SELECT, koji se izvode na bazi podataka.
Zaglavlje funkcije:
function SQLExp(sql: String): String;
Funkcija vrati ceo resultset upita SELECT. Ako je u rezultatu više zapisa, zapiše svaki u svoj red. Ako sintaksa upita SELECT nije pravilna ili sadrži netačna imena tabele tj. polja u njima, funkcija ne javi greške, ali vrati prazan niz.
Razlika između funkcija SQLExp na MS-SQL i Oracle
Sintaksa upita SELECT na Oraclu se malo razlikuje od one na MS-SQL, pa želimo koristiti iste izpise na oba servera. Zato moramo pisati izraze SQLExp, koji su istovremeno pravilni za oba. Pri tom nam malo pomaže i sam PANTHEON, koji ima veoma jednostavan konvertor za pretvaranje upita SELECT između oba servera i pravilno prevodi samo neke jednostavne upite.
Najznačajnija razlika u sintaksi je operator za sastavljanje nizova, koji je na MS-SQL-u '+' i na Oraclu '||'.
Donji upit na MS-SQL vrati prefix države i identifikacioni broj za PDV našeg preduzeća
[SQLexp('select ltrim(acVATCodePrefix+ltrim(acCode)) from tHE_SetSubj where acSubject = ''' + <tbParameter."acOurCompany"> + '''')]
Odgovarajući upit na Oraclu je
[SQLexp('select ltrim(acVATCodePrefix||ltrim(acCode)) from tHE_SetSubj where acSubject = ''' + <tbParameter."acOurCompany"> + '''')]
Zbog pretvaranja će se upit pravilno izvesti na servera ako ga zapišemo u jednom ili drugom obliku.
Kao što smo napomenuli, konvertor ne zna pravilno da prevede sve. Najznačajniji primer je ispis samo prvih zapisa, za kojeg MS-SQL koristi upit TOP, Oracle i upit ROWNUM, razlika samo je u sintaksi.