DEFINISANJE FILTERA ZA IZVEŠTAJ 
U ovom prozoru definiše se izgled filtera za tekući izveštaj, koji će služiti za postavljanje kriterijuma za pretragu kod konačnog formiranja izveštaja. U zaglavlju se nalazi lista sa ponuđenim standardnim filterima: po jedan standardni filter za svaku oblast poslovanja, jedan filter za slobodne izveštaje i tzv. filter po upitu izveštaja, koji nudi sve kolone iz SELECT sekcije SQL upita izveštaja. Za svaki izveštaj program će sam inicijalizovati filter na osnovu tipa izveštaja i oblasti poslovanja. Ovde možete ponovo inicijalizovati filter izborom iz padajuće liste i dugmetom <Postavi inicijalni filter>. Dugmetom <Podesi izgled> otvara se dodatna paleta sa alatkama za podešavanje izgleda.
Izborom opcije "Bez filtera" nalažete programu da ne prikazuje nikakav filter u prozoru za formiranje izveštaja. Ovo je podrazumevana opcija kod izveštaja tipa SQL.
Da biste započeli sa kreiranjem filtera morate odabrati neki od ponuđenih inicijalnih filtera, a zatim ga modifikovati. Ako izabrani inicijalni filter nije u skladu sa SQL upitom izveštaja, program će prikazati upozorenje, ali posle toga možete nastaviti sa podešavanjem izgleda filtera.
Podešavanje izgleda filtera
U režimu za podešavanje izgleda vidi se zelena pozadina koja prikazuje visinu filtera. U zavisnosti od broja i rasporeda polja u filteru, visinu možete promeniti dvostrukim klikom miša u prazan prostor na toj pozadini. Otvara se prozor za osobine objekta u filteru. Izaberite listić <Pozicija> i unesite željenu visinu.
Klikom miša na određeni objekat u filteru (tekst ili polje) selektujete taj objekat. Mišem ga možete pomerati i "razvlačiti" i "skupljati". Držeći pritisnut taster <Ctrl> i klikom miša na pojedine objekte možete selektovati više objekata i onda ih zajedno pomerati. Selektovani objekti i prikazuju se u paleti sa alatkama. U vrhu palete nalazi se dugmad za poravnanje objekata. Kad selektujete više objekata, ovom dugmadi možete im izjednačiti poravnanje ili dimenzije, tako što se svi objekti izjednačavaju sa prvim selektovanim objektom. Opis funkcija dugmadi je redom:
- poravnaj po levoj ivici
- poravnaj po desnoj ivici
- poravnaj po gornjoj ivici
- poravnaj po donjoj ivici
- izjednači širinu
- izjednači visinu
- poravnaj po sredini objekte jedan ispod drugog
- poravnaj po sredini objekte jedan pored drugog
- izjednači horizontalni razmak
- izjednači vertikalni razmak
Dugmetom <Prikaži imena polja> možete naizmenično prikazivati imena polja u filteru ili njihove vrednosti.
Dugmetom <Vrati original> poništavaju se izmene od poslednjeg snimanja i učitava se poslednji sačuvani izgled filtera.
Dugmetom <Briši objekte> brišete sve selektovane objekte.
Dugmetom <Osobine objekta> otvara se prozor za definisanje osobina selektovanog objekta (mora biti selektovan samo jedan objekat).
Izborom tipa objekta iz padajuće liste i dugmetom <Novi objekat> otvara se prozor za definisanje osobina novog objekta i time se dodaje nov objekat u filter.
Dugmetom <Kopiraj objekat> dodaje se novi objekat u filter kpiranjem postojećeg objekta (mora biti selektovan samo jedan objekat).
Osobine objekta
U ovom prozoru podešavaju se osobine svakog pojedinog objekta u filteru. Nećemo objašnjavati atribute koji su sami po sebi jasni, kao font, boje, okviri, pozicije i dimenzije i sl. Obratićemo više pažnje na ono što je karakteristično za sam filter i njegovu definiciju, a to su izrazi u bazi. Ostale atribute najbolje ćete razumeti proučavajući osobine objekata kod standardnih filtera.
Izraz uslova za filter
U listiću <Baza>, koji je dostupan samo za objekte tipa "Kolona (polje)", definiše se ono što je suštinsko za filter, odnosno izraz koji će se primeniti kao uslov kod formiranja izveštaja. U donjem delu je prikazan SQL upit koji u sekciji SELECT prikazuje izraze svih polja filtera, a u sekciji FROM prikazuje sekciju iz SQL upita samog izveštaja. Za svako polje filtera morate da unesete SQL izraze za levu i desnu stranu uslova i operator. Da bi bilo jasnije o čemu se radi, počećemo od jednostavnog primera.
Pretpostavimo da imate izveštaj sa sledećim SQL upitom:
SELECT konto.sifra FROM dba.konto
i da želite da napravite filter po polju konto.sifra.
U filteru treba napraviti polje u koje ćete kod formiranja izveštaja uneti uslov po šifri konta. Program na osnovu unetog podatka treba da napravi uslov koji bi npr. glasio:
WHERE konto.sifra = 'unetipodatak'
gde je unetipodatak vrednost koju ste uneli u polje.
Uslov ima levu stranu (konto.sifra), operator (=) i desnu stranu ('unetipodatak'). Dakle, u polje "SQL izraz - leva strana uslova" uneli biste konto.sifra, za operator biste odabrali = (jednako), a u polje "SQL izraz - desna strana uslova" treba da na neki način unesete naznaku da će se tu ugraditi podatak koji unesete u polje filtera. U tu svrhu služi ključna reč '#INPUT#'. Obratite pažnju da se ova ključna reč uvek navodi uokvirena malim navodnicima (apostrofima).
Većina polja za filter sledi ovu jednostavnu šemu: izrazubazi operator '#INPUT#', s tim što izraz u bazi može biti jednostavno navođenje neke kolone, ali može biti i čitav podupit (subselect). Ipak, kod nekih složenijih uslova, i desna strana uslova može biti neki složeniji izraz, a ključna reč '#INPUT#' može se naći na više mesta u izrazu i na desnoj i na levoj strani. Kao primer možete pogledati polje "Grupa artikala" u filteru za oblast poslovanja "Trgovina". Ovo je tipično za uslove koji se postavljaju po hijerarhiji, u ovom slučaju tražimo da artikal stavke pripada navednoj grupi ili bilo kojoj od njezinih podgrupa. U slučaju kad je desni deo uslova izraz koji vraća više zapisa, koristi se operator IN (u).
Polja filtera mogu se, pored osnovne funkcije za postavljanje uslova, koristiti i kao argumenti u SQL upitu. Detalje možete pogledati u definisanju SQL upita.
Ako želite da definišete polje filtera koje služi samo da se njegova vrednost prosleđuje kao argument u SQL upit, a da ne postavlja uslov upita, kao operator treba izabrati ARGUMENT. U polje "SQL izraz - leva strana uslova" treba uneti izraz cast( null as tippodatka ), gde "tippodatka" može biti integer, numeric, date, time, datetime ili char(n). Ovaj poslednji tip koristi se za tekstualna polja, a n određuje maksimalnu dužinu teksta u polju, npr. char(100). Polje "SQL izraz - desna strana uslova" treba ostaviti prazno.
Ako želite da omogućite da se u polje filtera unese više vrednosti (razdvojenih zarezima), treba da uključite opciju "Dozvoljeno nabrajanje vrednosti". Ovakvo polje filtera biće prikazano bledo plavom bojom, da bi korisnik znao da tu može da nabraja vrednosti.
Kad potvrdite unete izraze, program proverava ispravnost celokupnog upita i ne dozvoljava Vam da snimite neispravan SQL upit.
Polje "Naziv kolone" dostupno je samo kod kreiranja novog objekta i mora da bude jedinstveno za ceo filter. Ono jednostavno imenuje objekat u filteru.
U filteru za izveštaj možete definisati i datumske uslove, ali to nije preporučljivo. Zbog mogućnosti generisanja izveštaja kroz više poslovnih godina, program ima poseban filter za vremenske uslove, koji primenjuje posebna pravila. Ako u izveštaju ne koristite filter za vremenske uslove, onda datumske uslove treba definisati u filteru izveštaja.
Način editovanja polja u filteru
Kad odredite levi deo uslova, on automatski definiše tip podatka u filteru. Na osnovu tipa podatka postavlja se podrazumevani način editovanja. Ako je podatak tipa char(xx), postavlja se običan editor. Ako je tipa date, time ili datetime, postavlja se maska za unos, a ako je tipa long postavlja se padajuća lista iz baze. Naravno, ovo je samo ponuđeno kao uobičajeno, ali Vi to možete promeniti i prilagoditi Vašim potrebama.
Npr. tipično je da se za kolone koje mogu imati samo dve vrednosti (kao P ili N za proknjižen ili neproknjižen nalog) koristi polje za potvrdu (checkbox). Međutim, i ovde treba biti oprezan. Polje za potvrdu uvek postavlja uslov (nema stanje bez uslova), pa će u gornjem primeru korisnik moći da izlista ili proknjižene ili neproknjižene naloge, ali ne i jedne i druge. Za takve slučajeve bolje je koristiti padajuću listu sa dve vrednosti i mogućnošću editovanja, tako da imamo treću vrednost - prazno (dakle, bez uslova).