Referenciranje polja baze podataka
Dogodci
Do sada smo gledali skripte s samo jednom glavnom procedurom, koja se izvršava kada se izvještaj počne pokretati. U glavnoj proceduri mogu se postaviti inicijalne postavke i inicijalizirati varijable. Međutim, to nije dovoljno za potpunu kontrolu nad procesom generiranja izvještaja. Da bi se omogućila što veća kontrola nad generiranjem izvještaja, svaki objekt ima nekoliko događaja kojima se mogu dodijeliti rukovatelji (tj. procedure u skripti). Na primjer, povezivanje rukovatelja s podatkovnom trakom omogućuje filtriranje zapisa, tako da se traka može sakriti ili otkriti prema ispunjenju specifičnih uvjeta.
Pokažimo proces stvaranja izvještaja i događaje koji se aktiviraju putem jednostavnog izvještaja koji sadrži jednu stranicu i ima jednu “MasterData” traku, s dva “Text” objekta na traci:

Kao što je opisano iznad, glavna procedura skripte poziva se na samom početku pokretanja izvještaja. Nakon toga započinju osnovni elementi konstrukcije izvještaja. Prvo se poziva “OnStartReport” događaj objekta "Report". Zatim, prije nego što se kreira izlazna stranica, poziva se “OnBeforePrint” događaj stranice. Ovaj događaj se poziva jednom za svaku dizajnersku stranicu u predlošku izvještaja (dizajnerske stranice ne treba miješati s izlaznim stranicama izvještaja!). U našem primjeru događaj se poziva jednom, jer dizajn izvještaja sastoji se od samo jedne dizajnerske stranice.
Zatim se događaji podatkovnih traka pozivaju u sljedećem redoslijedu:
1. poziva se “OnBeforePrint” događaj trake
2. poziva se “OnBeforePrint” događaj svakog objekta sadržanog u traci
3. svaki objekt se ispunjava podacima (u našem primjeru s vrijednostima “Company” i “Addr1" DB polja)
4. poziva se “OnAfterData” događaj svakog objekta
5. provode se radnje kao što su pozicioniranje objekata na traci (ako među njima postoje rastezljivi objekti), izračunavanje visine trake i rastezanje (ako je rastezljiva)
6. poziva se “OnAfterCalcHeight” događaj trake
7. kreira se nova izlazna stranica ako traka nema dovoljno prostora u bijelom prostoru stranice
8. traka i svi njezini objekti prikazuju se na izlaznoj stranici
9. poziva se “OnAfterPrint” događaj svakog objekta trake
10. poziva se “OnAfterPrint” događaj same trake
Trake se nastavljaju ispisivati sve dok izvor povezan s trakom ima podatke. Nakon toga ispis izvještaja prestaje, poziva se “OnAfterPrint” događaj stranice izvještaja i konačno “OnStopReport” događaj objekta “Report”.
Dakle, korištenjem događaja različitih objekata praktički se može upravljati svakim korakom procesa stvaranja izvještaja. Ključ za korištenje događaja je temeljito razumijevanje procesa izlaza trake, što će biti obrađeno u sljedećim odjeljcima. Većina radnji može se izvesti samo korištenjem “OnBeforePrint” događaja trake; sve izmjene napravljene na objektu prikazuju se odmah. Međutim, ako je traka rastezljiva, nemoguće je reći u ovom događaju na kojoj će se stranici traka ispisati, budući da se izračun visine trake provodi u koraku 5. To se može učiniti, međutim, ili u “OnAfterCalcHeight” događaju u koraku 6 ili u “OnAfterPrint” događaju u koraku 9. Imajte na umu da će u posljednjem događaju traka već biti ispisana, tako da izmjene na objektima neće imati nikakav vidljiv učinak.
Bitno je jasno razumjeti “gdje i kada” se trake ispisuju i razumjeti vremensko usklađivanje (redoslijed pozivanja) svakog od njihovih događaja. Isto vrijedi i za svaki od objekata sadržanih u trakama.