Agregatne funkcije
Funkcije
V tem poglavju so razložene agregatne funkcije, funkcija GetForValue, SQLEXP ter IIF. Funkcije, ki so napisane posebej za PANTHEON 5.5 in jih ni v standardnem FastReport-u pa smo razložili posebej v kategoriji Datalab Funkcije.
Oglejte si primere uporabe funkcij v uporabniškem priročniku
Agregatne funkcije
Agregatne funkcije so poznane iz SQL-a in so:
SUM – vsota
AVG – povprečje
MAX – največja vrednost
MIN – najmanjša vrednost
COUNT – število zapisov
Najlažje jih dobimo tako, da z orodne vrstice z objekti prenesemo na izpis objekt s sistemskim tekstom
. Odpre se pogovorno okno na spodnji sliki.

Slika 1 - Okno za vnos sistemskih spremenljivk in agregatnih funkcij
Izberemo Aggregate value in v spustnih menijih ter potrditvenih poljih izberemo želene vrednosti:
-
Agregatno funkcijo (Function).
-
Pas (Data band), na katerega se nanaša funkcija.
-
Dataset, ki je običajno isti kot lastnost DataSet izbranega pasu.
-
Polje v tabeli ali poizvedbi (DataField), ki ga hočemo imeti za argument funkcije. Pri funkciji COUNT je ta lastnost brez pomena.
-
Ali naj upošteva podatke tudi, če je pas skrit (Count invisible bands). Ta možnost pride v poštev npr. pri izpisu zaloge, če nas zanimajo samo skupne količine. Predstavlja vrednost 1 zadnjega argumenta agregatnih funkcij.
-
Kumulativna vsota (Running total). Ta lastnost določa, ali naj se količine (vsote) prenesejo v naslednjo grupo. Predstavlja vrednost 2 zadnjega argumenta agregatnih funkcij.
-
V polje Izraz (Expression) lahko vneseno poljuben izraz brez oglatega oklepaja na začetku in koncu izraza. Pomagamo si lahko z gumbom fx, ki nam odpre ExpressionEditor, ki je pravzaprav DataTree.
Če hočemo v enem objektu izpisati izraz in spremno besedilo ali več izrazov, izberemo Text in v vnosno polje vpišemo poljubno besedilo. V tem primeru s posebnim objektom nismo pridobili ničesar, ker je to popolnoma enako, kot če bi pisali v navaden tekstovni objekt.
V tem oknu lahko izberemo tudi sistemske spremenljivke, vendar niso na voljo vse. Bolj enostavno je, da jih povlečemo preko DataTree (drevesa s podatki).

Pri vseh funkcijah je obvezen samo prvi argument.
Funkcija IIF
Funkcija IIF je podobna pogojnemu stavku if - then – else.
Glava funkcije:
function IIF(Expr: Boolean; TrueValue, FalseValue: Variant): Variant;
Funkcija GetFormValue
Funkcija GetFormValue vrne vrednost v objektu v oknu programa. Njen argument je ime objekta v oknu skupaj z imenom okna. Če objekt ne obstaja ali forma ni kreirana, funkcija vrne prazen niz.
Glava funkcije:
function GetFormValue(FormComponentName: String): Variant;
Funkcija SQLExp
Edini parameter funkcije SQLExp je SQL stavek SELECT, ki se izvede na bazi podatkov.
Glava funkcije:
function SQLExp(sql: String): String;
Funkcija vrne celoten resultset stavka SELECT. Če je v rezultatu več zapisov, zapiše vsakega v svojo vrstico. Če sintaksa stavka SELECT ni pravilna ali vsebuje napačna imena tabel oziroma polj v njih, funkcija ne javi napake, ampak vrne prazen niz.
Razlika med funkcijo SQLExp na MS-SQL in Oracle
Sintaksa stavka SELECT na Oraclu se malo razlikuje od tiste na MS-SQL, mi pa bi želeli uporabljati iste izpise na obeh strežnikih. Zato moramo pisati izraze SQLExp, ki so hkrati pravilni za oba. Pri tem nam malo pomaga sam PANTHEON, ki ima zelo enostaven konverter za prevajanje stavkov SELECT med obema strežnikoma in pravilno prevede samo nekatere enostavne stavke.
Najpomembnejša razlika v sintaksi je operator za sestavljanje nizov, ki je na MS-SQL-u '+' in na Oraclu '||'.
Spodnji stavek na MS-SQL vrne šifro države in identifikacijsko številko za DDV našega podjetja
[SQLexp('select ltrim(acVATCodePrefix+ltrim(acCode)) from tHE_SetSubj where acSubject = ''' + <tbParameter."acOurCompany"> + '''')]
Ustrezen stavek na Oraclu je
[SQLexp('select ltrim(acVATCodePrefix||ltrim(acCode)) from tHE_SetSubj where acSubject = ''' + <tbParameter."acOurCompany"> + '''')]
Zaradi konverterja se bo stavek pravilno izvedel na obeh strežnikih, če ga zapišemo v eni ali drugi obliki. Kot rečeno, konverter ne zna pravilno prevesti vsega. Najpomembnejši primer je izpis samo prvih zapisov, za katerega MS-SQL uporablja ukaz TOP, Oracle pa ukaz ROWNUM, razlika pa je tudi v sintaksi.