Definície zostáv - Pruhy v zostave (bandy)

Každá tlačová zostava sa skladá z niekoľkých blokov, ktoré sú v editore zostavy vyznačené vodorovnými pruhmi. Tieto nazývame pruhy, alebo pásy zostavy (tzv. bands). V každom takom pruhu je uvedená textová identifikácia pruhu. Inými slovami, ak chceme do tohto pruhu zadať nejaké položky, musíme ich do neho umiestniť.

Aby sme pochopili, ako zostava funguje, musíme si uvedomiť, že databáza obsahuje tabuľky, tabuľky obsahujú záznamy, ktoré majú nejaké položky. Tabuľky teda obsahujú položky (stĺpce) a záznamy (riadky). Zdrojom dát pre tlačovú zostavu je SQL dopyt do tejto databázy. Výsledok takéhoto príkazu si môžeme predstaviť ako zoznam požadovaných záznamov, kde každý záznam má niekoľko požadovaných položiek (inými slovami ako dvojrozmernú tabuľku, kde v riadkoch sú požadované záznamy a v stĺpcoch ich položky). Tieto požadované záznamy a ich položky môžu byť v najjednoduchšom prípade priamo dáta z databázy, v zložitejšom prípade to môžu byť už rôzne súčty za vybrané záznamy v databáze. Objasníme na príklade:

Príklad: Môžeme napr. tlačiť zoznam faktúr. Potom každá faktúra je jedným záznamom v databáze a položkami tejto databázy sú napr. dátum, firma, čiastka a pod. SQL dopyt môže vracať priamo tieto záznamy a ich položky. V tlačovej zostave potom môžeme definovať rôzne súčty za tieto faktúry, napr. podľa mien.
Inou možnosťou by bolo mať nadefinovaný zložitejší SQL dopyt do databázy, ktorý už vracia príslušné súčty.

V tlačovej zostave sa môžu vyskytovať rôzne pruhy, ktoré môžu byť rôznym spôsobom kombinované.

  • Hlavička stránky - Položky tu uvedené sa budú tlačiť na začiatku každej novej stránky. Pri formulároch dokladov tu typicky môžu byť umiestnené položky ako číslo dokladu, variabilný symbol a pod. Môžu tu byť aj položky s podmienkou pre tlač, ktoré sa tlačia len vtedy, ak je počet stránok viac ako 1, ako napr. Meno dodávateľa a odberateľa a pod.
  • Titulok - Položky v ňom umiestnené sa budú tlačiť iba na prvej stránke celej tlačovej zostavy. Typicky bude použitý pri zostavách typu výpisy kníh, kde do titulku bude umiestnený napr. názov celej tlačovej zostavy, meno firmy, ktorej dáta sú vypisované, Výberové podmienky pre tlačené dáta, Dátum obstarania zostavy apod.
  • Pätička stránky - je ekvivalentná k Hlavičke stránky. Blok, v ktorom sú položky, ktoré sa majú tlačiť vždy na konci každej stránky. Typicky sa tu môže tlačiť napr. číslo stránky.
  • Hlavička stĺpca - obdoba hlavičky stránky. Má význam pre stĺpcové zostavy. (Počet stĺpcov sa nastavuje vo vlastnostiach zostavy).
  • Detail - Detail je základnou časťou zostavy. Môžeme ho chápať ako akési "telo" celej zostavy. V ňom sa vlastne spracovávajú údaje práve z tej tabuľky, cez ktorú sa v danej zostave tlačí. Položky uvedené v páse Detail sa budú tlačiť pre každý tlačený záznam z databázy. Je to teda základný blok, v ktorom musíte uviesť zoznam všetkých položiek, ktoré chcete o každom tlačenom zázname vytlačiť.

    Pri zostavách v ňom typicky budú položky ako napr. číslo dokladu, firma z dokladu, celková suma a pod. Potom sa prejdú vybrané záznamy z databázy a pre každý sa vytlačia položky Detailu, teda číslo dokladu, firma a celková čiastka. Ak napr. tlačíme 5 vybraných dokladov faktúr, výsledkom bude zoznam 5-tich riadkov, v každom riadku budú údaje o jednej z tlačených faktúr. Pri zostavách typu formulár tu typicky budú údaje zadávané v hlavičkách tlačených dokladov.

  • Vnorené detaily (subdetaily) - Okrem Detailu sa môžu v zostave vyskytovať Vnorené detaily alebo Subdetaily. Používajú sa vtedy, pokiaľ k jednému tlačenému záznamu v pruhu Detail, je potrebné vytlačiť nejaké ďalšie záznamy, ktoré sa k nemu viažu a ktoré sú čerpané z iného dátového zdroja. Typickým príkladom sú napr. riadky faktúry, ktoré sa viažu k hlavičke faktúry a je potrebné ich vytlačiť vo formulári faktúry. Teda formulár na tlač faktúry je nadefinovaný nad tabuľkou faktúr, pre každú tlačenú faktúru v Detaile vytlačí jej hlavičkové údaje a v pripojenom Subdetaile potom jej riadky.

    Vnorený detail môže mať ďalší vnorený detail a tak cyklicky ďalej - príkladom použitia môže byť napr. vnorený detail pripojený k tlačenej skladovej položke na riadku formulára faktúry na tlač prípadných šarží/sériových čísiel teda napojený na tabuľku Pohyby šarží/sér.č. Alebo ďalší Vnorený detail napojený na tabuľku objednávok, na ktorom sa vytlačia čísla objednávky, pokiaľ nejaké boli čerpané do danej faktúry , podobne pre dodacie listy a pod.

    Každý vnorený detail má definovaného Vlastníka. Defaultne je vlastníkom Zostava (takže potom hlavná tabuľka, cez ktorú sa tlačí Detail), ale vlastníkom môže byť aj iný Subdetail. Objasníme na príklade:

    Príklad: Máme formulár faktúry vydanej. Detail je napojený na hlavný dataset, teda MAIN, príslušného SQL dopytu.
    Pod Detailom nech je definovaný Subdetail1 na tlač riadkov k danej hlavičke faktúry, teda napojený na dataset ROWS. Teda jeho Vlastník bude Zostava.
    Pod Subdetailom1 s riadkami nech je umiestnený ďalší Subdetail2 na tlač šarží k práve tlačenému riadku, teda napojený na dataset BATCHES. Teda jeho Vlastník bude Subdetail1.
    Pod Subdetailom 2 bude ďalej v zostave umiestnený ďalší Subdetail3 na tlač dodacích listov k danej faktúre. Teda bude napojený na dataset BillsOfDelivevery. Zoznam dodacích listov chceme tlačiť k faktúre, nie ku každému riadku faktúry, teda Vlastníkom bude zostava.

    Potom tlač niekoľkých označených faktúr prebieha tak, že sa vezme hlavička prvej tlačenej faktúry a vytlačia sa položky na Detaile. Potom sa vyhodnotí prvý subdetail vlastnený zostavou, teda Subdetail1 a vytlačí sa prvý riadok. Ďalej sa vyhodnotí ním vlastnený Subdetail2 a vytlačí sa zoznam prípadných šarží pre prvý riadok. Potom sa vezme ďalší riadok a cyklus sa opakuje až do spracovania všetkých riadkov prvej faktúry. Potom sa pokračuje ďalším subdetailom vlastneným zostavou, teda Subdetailom3 a vytlačia sa všetky DL naviazané na danú faktúru. Potom sa pokračuje až do konca zostavy. Nakoniec sa celý cyklus opakuje pre ďalšiu faktúru až do vytlačenia formulárov všetkých označených faktúr.

  • Hlavička vnoreného detailu - vnorený detail môže mať svoju hlavičku, do ktorej môžete umiestniť napr. položky na tlač nadpisu nad informáciami tlačenými ďalej v subdetaile, oddeľujúcu čiaru apod.
  • Pätička vnoreného detailu - obdoba hlavičky subdetailu.
  • Ďalej je možné do zostavy pridávať ďalšie bloky – tzv. užívateľské skupiny. Každá skupina potom môže mať Hlavičku skupiny a Pätičku skupiny. Hlavička skupiny môže byť použitá v zostave samostatne bez Pätičky skupiny, ale opačne to byť nemôže, tj. v zostave nemôže byť Pätička skupiny, ak tam nie je Hlavička skupiny (keďže v hlavičke skupiny sa definuje, podľa čoho sa má skupinovať).

    Ak potrebujete mať v zostave len pätičku, ale nemať hlavičku, dá sa to riešiť napr. tak, že hlavičke skupiny v zostave nastavíte Podmienku na tlač tak, aby sa netlačila. Tzn. hlavička skupiny sa bude vyhodnocovať (tzn. bude sa podľa jej definície skupinovať), ale nebude sa tlačiť.

  • Zostava môže ďalej obsahovať pruh Zhrnutie.
  • Pripojené pruhy - Jednotlivé pruhy spomenuté vyššie môžu mať jeden alebo viacero pripojených pruhov. Pripojený pruh sa vyhodnocuje pre rovnaký záznam z databázy ihneď po vyhodnotení pruhu, ku ktorému je pripojený. Jednotlivé pripojené pruhy môžu mať rôzne podmienky pre tlač, potom sa pre každú spracovávanú vetu vytlačia všetky, ktoré majú splnenú podmienku pre tlač bez ohľadu na ich hierarchiu. Objasníme na príklade:

    Príklad: Máme formulár faktúry vydanej. V ňom máme Subdetail1 (viď vyššie) pre tlač riadkov faktúry. Vo faktúre ale všeobecne môžu byť až 4 typy riadkov a my pochopiteľne musíme definovať tlač položiek pre každý typ inak. Takže napr. priamo na pruh Subdetail1 môžeme umiestniť položky pre tlač z riadka typu 0 a Podmienku pre tlač riadka zadať tak, že sa bude tlačiť len vtedy, ak je typ rovný 0.

    Ďalej k Subdetailu1 pridáme Pripojený pruh1 (napr. cez Vlastnosti pruhu alebo cez lokálne menu, viď Popis editora tlač. zostáv ) a do neho položky pre tlač z riadka typu 1 a Podmienku pre tlač tak, aby sa pruh tlačil iba pre riadky typu 1.

    Ďalej k Subdetailu1 ďalší Pripojený pruh2 a do neho položky pre tlač z riadka typu 2 a Podmienku pre tlač tak, aby sa pruh tlačil jedine pre riadky typu 2. Podobne pre riadok typu 3.

    Tlač potom prebieha tak, že na Detaile sa vytlačia položky hlavičky faktúry a začne sa spracovávať prvý riadok. Pre každý riadok sa vyhodnotí pruh Subdetail1 a všetky jeho Pripojené pruhy. Nech je napr. riadok typu 3. Teda podmienka pre tlač pruhu Subdetail1 nie je splnená, žiadna položka z neho sa nevytlačí, podmienka Pripojeného pruhu 1 nie je splnená, žiadna položka z neho sa nevytlačí, podmienka Pripojeného pruhu 2 nie je splnená. Splnená je až podmienka Pripojeného pruhu 3, takže sa vytlačia položky na ňom umiestnené (tie tiež môžu mať vlastné podmienky pre tlač).

    Pokiaľ by Subdetail1 bol vlastníkom ďalších subdetailov (napr. pre tlač šarží, viď vyššie), spracovali by sa ešte tieto subdetaily vlastnené riadkom a potom sa celý cyklus opakuje pre ďalší riadok faktúry.

  • Cyklický pruh - Ako bolo spomenuté vyššie, pruhy tlač. zostavy sa vykonávajú postupne pre jednotlivé tlačené záznamy z databázy. V žiadnom prípade nie je možné vracať sa v databáze po záznamoch (tzn. je potrebné na konci znovu všetky záznamy načítať a pod.). Pokiaľ je teda potrebné na záver vytlačiť nejaké súčty za tlačené vety, musíte si tieto súčty priebežne načítavať a ukladať do pamäťových premenných definovaných pre danú zostavu alebo za týmto účelom použiť pamäťové tabuľky. Cyklický pruh je potom určený práve na tlač z týchto pamäťových tabuliek.

Popis, ako jednotlivé pruhy do zostavy vložiť, popis vlastností jednotlivých pruhov a vlastností prvkov, ktoré sa dajú na pruhy vkladať, je uvedený v kap. Popis editora tlačových zostáv.

Príklad: Na záver uvedieme príklad štruktúry pruhov zobrazenej pre zostavu v editore zostáv pomocou ikony jeho horizontálneho panela funkcií. Zostava má hlavičku (napr. pre tlač čísla faktúry) a k nej pripojený pruh (pre tlač nadpisu k riadkom pre viacstránkové formuláre). V zostave je použité skupinovanie (na vyčíslenie celkových zliav na doklade). Vnútri skupiny je hlavný band Detail (pre tlač hlavičkových údajov faktúry). K nemu existuje niekoľko subdetailov vlastnených Detailom (zostavou). Subdetail2 má niekoľko Pripojených pruhov (na tlač riadkov) (bandy súvisiace s aktuálnym, na ktorom stojí kurzor, sú graficky zvýraznené). Ďalej je subdetail2 vlastníkom subdetailu1 (na tlač šarží). Subdetail 3 (na tlač zálohových listov), subdetail4 (na tlač dodacích listov) a subdetail5 (na tlač objednávok) majú všetky definované svoje hlavičky subdetailu (na tlač oddeľujúcej čiary). Ďalej pätičku skupiny a k nej pripojené pruhy (na tlač sumárnych informácií za doklad). Pruh Zhrnutie (napr. na nastavenie nulovania čítačky stránok). Pätička stránky (na tlač informácií o strane, na ktorej doklad pokračuje - pre viacstránkové doklady) a pripojený pruh (na tlač informácií o tom, kto doklad vystavil, kontakt na www dodavatela a pod.):

Príklad štruktúry pruhov v zostave na tlač formulára faktúry.