Referenciranje polj baze podatkov
Dogodki
Do sedaj smo si ogledali skripte z le glavno proceduro, ki se izvede, ko se poročilo začne izvajati. V glavni proceduri lahko naredimo začetne nastavitve in inicializiramo spremenljivke. Vendar to ni dovolj za popoln nadzor nad procesom generiranja poročila. Da bi omogočili čim večji nadzor nad generiranjem poročila, ima vsak objekt več dogodkov, na katere lahko dodelimo obdelovalce (tj. procedure v skriptu). Na primer, povezovanje obdelovalca z podatkovnim pasom omogoča filtriranje zapisov, tako da je pas mogoče skriti ali razkriti glede na izpolnitev določenih pogojev.
Prikažimo postopek ustvarjanja poročila in dogodke, ki jih sproži preprosto poročilo, ki vsebuje eno stran in ima en pas "MasterData", z dvema objektoma "Text" na pasu:

Kot je opisano zgoraj, se glavna procedura skripte pokliče na samem začetku izvajanja poročila. Po tem se začnejo bistvene stvari pri konstrukciji poročila. Najprej se pokliče dogodek "OnStartReport" objekta "Report". Nato, preden se ustvari izhodna stran, se pokliče dogodek "OnBeforePrint" strani. Ta dogodek se pokliče enkrat za vsako oblikovalsko stran v predlogi poročila (oblikovalske strani ne smemo zamenjati z izhodnimi stranmi poročila!). V našem primeru se dogodek pokliče enkrat, saj zasnova poročila vsebuje le eno oblikovalsko stran.
Nato se dogodki podatkovnih pasov pokličejo v naslednjem vrstnem redu:
1. pokliče se dogodek pasu "OnBeforePrint"
2. pokliče se dogodek "OnBeforePrint" vsakega objekta, ki je vsebovan v pasu
3. vsak objekt se napolni s podatki (v našem primeru z vrednostmi polj "Company" in "Addr1")
4. pokliče se dogodek "OnAfterData" vsakega objekta
5. izvedejo se dejanja, kot so pozicioniranje objektov na pasu (če so med njimi raztegljivi objekti), izračun višine pasu in raztegovanje (če je raztegljiv)
6. pokliče se dogodek pasu "OnAfterCalcHeight"
7. ustvari se nova izhodna stran, če pas nima dovolj prostora v belem prostoru strani
8. pas in vsi njegovi objekti se prikažejo na izhodni strani
9. pokliče se dogodek "OnAfterPrint" vsakega objekta pasu
10. pokliče se dogodek "OnAfterPrint" samega pasu
Pasi se nadaljujejo s tiskanjem, dokler ima vir, povezan s pasom, podatke. Po tem se tiskanje poročila ustavi, pokliče se dogodek "OnAfterPrint" strani poročila in na koncu dogodek "OnStopReport" objekta "Report".
Tako lahko z uporabo dogodkov različnih objektov praktično upravljamo vsak korak procesa ustvarjanja poročila. Ključ za uporabo dogodkov je temeljito razumevanje procesa izhoda pasu, o katerem bomo razpravljali v naslednjih razdelkih. Večina dejanj se lahko izvede le z uporabo dogodka "OnBeforePrint" pasu; vse spremembe, ki jih naredimo na objektu, se takoj prikažejo. Vendar, če je pas raztegljiv, ni mogoče v tem dogodku povedati, na kateri strani bo pas natisnjen, saj se izračun višine pasu izvede v koraku 5. To je mogoče storiti bodisi v dogodku "OnAfterCalcHeight" v koraku 6 bodisi v dogodku "OnAfterPrint" v koraku 9. Upoštevajte, da bo v zadnjem dogodku pas že izhod, zato spremembe na objektih ne bodo imele vidnega učinka.
Pomembno je jasno razumeti "kje in kdaj" se pasovi izhodijo in razumeti časovni razpored (vrstni red klicev) vsakega od njihovih dogodkov. Prav tako za vsak od objektov, ki so vsebovani v pasovih.