Tiskové výstupy
Úvod
Tvorba tiskových výstupů je standardně podporována Variem. Díky tomu můžete definovat své vlastní tiskové výstupy dle svých požadavků. Při tvorbě tiskových výstupů můžete použít stávající tiskové formuláře, sestavy a grafy, které si upravíte dle vlastních potřeb, případně si vytvoříte nové.
Terminologie
Tiskové výstupy - V SDK jsou tímto názvem označeny jako celek tiskové formuláře, sestavy a grafy.
Tiskový formulář (dále TF) - pod systémem Vario se jedná o klasickou sestavu MS Access. V SDK budeme klasickou sestavu MS Accessu nazývat report.
Sestava - pod systémem Vario se jedná o formulář MS Access, jehož struktura je pevně definovaná na maximálně deset sloupců, jejichž hodnoty si uživatel může nastavit dle vlastních potřeb. Tento formulář je již vytvořen a k vytvoření nové sestavy v zásadě stačí vytvořit dotaz, který pro ní dodá data a definovat rozvržení a zdroje sloupců.
Graf - pod systémem Vario se jedná o formulář, jehož struktura je pevně definovaná. Uživatel pouze vytvoří, nebo zvolí již vytvořený zdroj dat, která se mají graficky zobrazit. Tento formulář je již vytvořen a k vytvoření nového grafu stačí vytvořit dotaz, který pro něj dodá data a definovat vlastnosti grafu.
Důležité upozornění !!
Všechny nově vytvořené nebo upravené tiskové formuláře, sestavy a grafy jsou dodány do Varia mimo hlavní distribuci. Z tohoto důvodu po smazání nebo přeinstalování (ale ne při update) Varia dojde k smazání všech takto dodaných prvků a tím k jejich nenávratnému odstranění. Pokud chcete nové nebo upravené tiskové výstupy zachovat, je třeba provést jejich export do externí databáze. Odtud je můžete v případě potřeby kdykoliv znovu importovat do Varia pro další použití.
Centrální správa tiskových výstupů
Tiskové výstupy (Tiskové formuláře, Sestavy a Grafy) jsou umístěny centrálně. To umožňuje snadnou distribuci nových (zákaznických) tiskových výstupů.
Poznámka: V minulých verzích Varia (9, 8) byly centrálně uloženy pouze definice (tj. rozvržení sloupců, použitá písma atd.) Sestav a Grafů. Dotazy, které vracejí data do tiskových výstupů byly uloženy v jednotlivých modulech. Tiskové formuláře byly uloženy v modulech.
Snadná instalace
Všechny tiskové výstupy jsou uloženy centrálně v datové složce (složka profilu). Všichni uživatelé přihlášení do daného profilu mají k dispozici stejný seznam tiskových výstupů. V okamžiku, kdy zvolí tisk tiskového výstupu, zkontroluje se, zda má uživatel na jeho počítači nainstalovaný tiskový výstup. Pokud ne, výstup se stáhne z datové složky na počítač. Potom se otevře.
Díky domu stačí nové (zakázkové) tiskové výstupy nainstalovat jen jednou. Při instalaci se totiž tiskový výstup nainstaluje do datové složky aktuálního datového profilu a od té chvíle je k dispozici všem uživatelům přihlášeným do tohoto profilu.
Tisk nezávislý na modulu
Tiskové výstupy jsou nezávislé na modulech. Můžete například v modulu Adresář otevřít detail faktury a z něj doklad vytisknout.
Jednoduchý návrh tiskových formulářů
Každý tiskový formulář je umístěn v samostatném souboru. Tento soubor je otevřený pro úpravy v programu Microsoft Access. Můžete tedy otevřít databázi, připojovat tabulky, vytvářet dotazy a ostatní databázové objekty přímo v "ostrém" souboru.
V souboru tiskového formuláře bude zpravidla umístěn pouze "obyčejný" tiskový formulář, pomocí kterého budeme tisknout. Kromě toho však v tomto souboru mohou být libovolné objekty databáze Access a programy.
Struktura
Sestavy a Grafy jsou uloženy v souboru Firmy.mdb takto:
- Tabulka Sestavy a Grafy: definice sestav a grafů
- Tabulka Sestavy_tabulky a Grafy_tabulky: seznam tabulek, ze kterých sestava (graf) získává data
- Tabulka Sestavy_dotazy a Grafy_dotazy: seznam dotazů včetně SQL výrazů
- Tabulka Rozvrzeni_sestav: popis sloupců
- Tabulka Definice_sestav: vzorce pro definované sestavy
Tiskové formuláře jsou uloženy takto:
- V tabulce Tiskove_formulare v souboru Firmy.mdb je popis tiskového formuláře
- Soubor typu .mda je uložen v datové složce. V datové složce je povinná podsložka Tiskové_formulare a v ní jsou umístěny soubory jednotlivých tiskových formulářů (jeden soubor může obsahovat i více tiskových formulářů). Soubory .mda jsou organizovány v podsložkách. Standardně dodávané TF jsou umístěny ve složkách, jejichž struktura odpovídá členění modul\agenda. Zákaznické TF lze umisťovat stejným způsobem (podle modulu a agendy) nebo pro ně vytvořit vlastní složku. Složka a název souboru jsou uloženy v tabulce Tiskove_formulare (podle tohoto údaje bude Vario hledat tiskový výstup).
Průběh tisku
Tiskové formuláře
- Volá se funkce DejTiskovyFormular(Agenda, NazevTF), která vrátí vyplněnou strukturu TiskovyFormular. Tato funkce zároveň zjistí zda je soubor tiskového formuláře ve složce "C:\Program Files\Vario11\Tiskove_formulare\XXXX\". Pokud není, zkopíruje nejdříve soubor ze složky "Datová_složka_aktuálního_datového_profilu\Tiskove_formulare\XXXX".
- Volá se metoda App.TiskNastavit Agenda, Kniha, Rok, Obdobi
Kde:
Agenda: název agendy, jejíž data se tisknou
Kniha: název knihy, jejíž data se tisknou
Rok: rok tisku pro roční agendy
Obdobi: období tisku pro agendy závislé na tisku - Volá se tento výraz
Run TF.Slozka & TF.Soubor & ".OtevritTiskovyFormular", TF.Name, acViewPreview, 1, Where
Kde:
TF je struktura naplněná předchozím voláním TF = DejTiskovyFormular(Agenda, NazevTF)
acViewPreview: je konstanta pro náhled nebo acViewNormal pro tisk
1: je počet kopií (má význam jen při nastavení předchozího parametru na acViewNormal)
Where: je proměnná typu string, ve které je případná podmínka filtru
Popis parametrů je shodný s popisem metody DoCmd.OpenReport - Předchozí volání spustí funkci OtevritTiskovyFormular, která se nachází v souboru tiskového formuláře. Název funkce, její parametry a návratová hodnota jsou povinné.
Funkce OtevritTiskovyFormular v obecném případě provede připojení tabulek na data aktuální firmy, předá parametry metodě OpenReport a v případě úspěchu vrátí hodnotu True. Nebo před tímto voláním otevře dialogové okno pro nastavení nějakých parametrů tisku (zadání kriterií apod., dialogové okno je také v modulu).
Jinak však obsah funkce záleží zcela na programátorovi, takže lze otevřít v podstatě cokoli. - V dotazech pro tisk se používají tyto funkce pro výběr záznamů:
TiskAgenda()
TiskKniha()
TiskRok()
TiskObdobi()
Tyto funkce vracejí hodnoty nastavené metodou TiskNastavit (viz výše). Tyto funkce nahrazují funkce AktualniAgenda, AktualniKniha a AktualniRok, jejichž použití se nedoporučuje, neboť tisk není závislý na aktuálně otevřeném modulu, agendě, knize.
Sestavy
- Volá se metoda App.TiskNastavit Agenda, Kniha, Rok, Obdobi
(popis viz Tiskové formuláře) - Volá se tento výraz
Run App.SlozkaVaria & "Sestava.OtevritSestavu", Agenda, Sestava, Where
Kde:
Agenda: název agendy
Sestava: název sestavy
Where: je proměnná typu string, ve které je případná podmínka filtru - Předchozí volání spustí funkci OtevritSestavu, která se nachází v (uzavřené) knihovně Sestava.mda. Funkce OtevritSestavu provede připojení tabulek na data aktuální firmy. Potom otevře formulář Sestava a jeho vlastnost Sestava nastaví na hodnotu předanou parametrem Sestava (tj. název sestavy)
- Nastavení vlastnosti Sestava způsobí načtení sestavy (stejné jako výběr sestavy ze seznamu sestav v záhlaví formuláře Sestava). V průběhu načítání se zkontroluje, zda knihovna Sestava.mda obsahuje tabulky a dotazy, které sestava potřebuje. Pokud ne, vytvoří se podle definic uložených v tabulkách Sestavy_tabulky a Sestavy_dotazy*.
- V dotazech pro tisk se používají tyto funkce pro výběr záznamů:
TiskAgenda()
TiskKniha()
TiskRok()
TiskObdobi()
Popis viz Tiskové formuláře
* Z toho, že dotazy pro sestavy se stahují do knihovny Sestava.mda, plyne několik důležitých faktů:
- Názvy dotazů musí být jedinečné. Kontrolují se pouze názvy dotazů, nikoli jejich obsah. Při tvorbě zákaznických sestav volte vhodný prefix nebo suffix názvu, který zajistí, že nedojde ke kolizi. Podle tabulky Sestavy_dotazy zkontrolujte, zda již není název dotazu použit.
- Při nastavování možností sestavy nad dialogovým oknem Možnosti_agendy nemusí být k dispozici seznam polí (v případě, že sestava nebyla na tomto počítači ještě otevřena).
Definovaná sestava
Pro tisk definované sestavy platí v podstatě to samé co pro tisk sestav. Volání funkce pro otevření definované sestavy z knihovny vypadá takto:
Run App.SlozkaVaria & "Definovana_sestava.OtevritSestavu", Agenda, Sestava, Where
Podmínka Where se ignoruje
Definovaná sestava nestahuje žádné tabulky a dotazy. Vždy je založena na záznamech z tabulky Definice_sestav.
Grafy
Pro tisk grafů platí to samé, co pro tisk sestav. Volání funkce pro otevření grafu z knihovny vypadá takto:
Run App.SlozkaVaria & "Graf.OtevritGraf", Agenda, Graf, Where
Podmínka Where je určena pro budoucí použití (v aktuálních verzích ignoruje)
Tvorba nových TV
Příprava
Na počítači, na kterém budete vytvářet tiskové výstupy (dále TV), musí být nainstalováno Vario 11.0. Musíte mít plnou verzi Microsoft Access 9.0 (2000) nebo XP.Tvorba TF
- Vytvoříte novou, prázdnou databázi (dále pracovní db). Zřídíte odkaz na DAO 3.6 a C:\Program Files\Vario11\Vario.mda.
- Připojte tabulky z dat Varia (používejte zásadně datové soubory XXXX0001.mdb z lokální datové složky), vytvořte dotazy a reporty a případně další objekty. Odlaďte TV.
- Do TV zadejte povinná menu (řádek nabídek, panel nástrojů a místní nabídku) Varia.
Pokud chcete ladit TF s těmito nabídkami, musíte nejprve zavést knihovnu Vario.mda, která je obsahuje. Zavedení knihovny provedete voláním následujícího výrazu z ladicího okna (Ctrl+G): Run "C:\Program files\Vario11\Vario.BezHackuACarek", "ěšč" - Do dotazů zadejte podle potřeby funkce pro omezení záznamů (TiskAgenda(), TiskKniha(), TiskRok() a TiskObdobi()).
- Vytvořte funkci OtevritTiskovyFormular s povinnými parametry (můžete jí zkopírovat například ze souboru ..\Tiskove_formulare\Adresar\Osobní_udaje.mda, pokud používáte dialog pro zadání kriterií, vezměte za vzor například funkci ze souboru Obalka.mda).
- Otevřete aplikaci Tiskove_vystupy11.mdb. Přejděte na kartu Import TV.
- Vyplníte pole odshora dolů.
Do pole Zadejte pracovní databázi zadejte cestu k pracovní db.
Do pole Složka TF zadejte cestu, kde budou vytvořeny soubory obsahující TF. Implicitně by to měla být složka C:\Program Files\Vario11\Data\Tiskove_formulare\NazevModulu\NazevAgendy, kde NazevModulu\NazevAgendy můžete také nahradit vlastní složkou (například Zakaznicke_TF). - Importujte TF. Při importu se zkopíruje pracovní db do složky TF a přípona se změní na .mda.
- Spusťte Vario 11. Otevřete možnosti TF (možnosti agendy – tisk) a nastavte požadované parametry.
- Otestujte tisk. Případné opravy provádějte přímo v souboru TF (.mda). Nezapomeňte, že ve složce ..Vario11\Data\Tiskove_formulare\.. je uložen soubor TF, který se nepoužívá pro tisk. Vlastní tisk probíhá z kopie ve složce ..Vario11\Tiskove_formulare\.. Bude tedy vhodné provádět úpravy na kopii a po jejich dokončení zkopírovat upravený soubor TF zpět do složky ..Vario11\Data\Tiskove_formulare\..
Tvorba sestav a grafů
- Vytvoříte novou, prázdnou databázi (dále pracovní db).
- Připojte potřebné tabulky z dat Varia (používejte zásadně datové soubory XXXX0001.mdb z lokální datové složky), vytvořte dotazy.
- Do dotazů zadejte podle potřeby funkce pro omezení záznamů (TiskAgenda(), TiskKniha(), TiskRok() a TiskObdobi()).
- Otevřete aplikaci Tiskove_vystupy11.mdb. Přejdete na kartu Import TV.
- Vyplníte pole odshora dolů.
- Do pole Zadejte pracovní databázi zadejte cestu k pracovní db.
- Importujte sestavy/grafy.
- Spusťte Vario 11. Otevřete sestavu/graf a upravte rozvržení a všechna potřebná nastavení.
Převod tiskových výstupů z Varia 10 do Varia 11
U TF stačí změnit odkaz na knihovnu Vario.mda z C:\Program files\Vario10\Vario.mda na C:\Program files\Vario11\Vario.mdaV dotazech u všech typů TV, které jsou závislé na účetním / hospodářském roce je potřeba zkontrolovat podmínku pro výběr záznamů na základě data. Je potřeba pamatovat na to, že hospodářský rok na rozdíl od účetního nemusí začínat 1.1. a končit 31.12. Ve Variu jsou k dispozici funkce HospodarskyRok, HospodarskyRokZacatek, HospodarskyRokKonec. Pro výběr dokladů používáme nyní novou podmínku ((Doklady.Rok) = TiskRok()). (Doklady.Rok je nové pole obsahující hospodářský rok dokladu.)
Převod tiskových výstupů z Varia 9 do Varia 10
Příprava
Na počítači, na kterém se budou převádět tiskové výstupy (dále TV) musí být nainstalováno Vario 9.0 a Vario 10.0. Tiskové výstupy, které se budou převádět, musí fungovat ve Variu 9.0. Předpokládá se připojení na lokální data. Musíte mít plnou verzi Microsoft Access 9.0 (2000).Převod tiskových formulářů
- Vytvoříte novou prázdnou databázi (dále pracovní db). Pomocí funkce import do ní importujte z modulu, který obsahuje tiskové formuláře (dále TF): všechny tabulky*, všechny dotazy**, všechny tiskové formuláře (reporty)*** a případně formuláře, které tiskové výstupy používají jako dialogová okna pro zadání parametrů.
* Minimálně musíte importovat tabulku Tiskove_formulare včetně dat a všechny tabulky (resp. propojení na tabulky), které používají TF, jež budete převádět.
** Minimálně dotazy, které používají TF, jež budete převádět
*** Minimálně reporty, které jsou potřeba k převodu (nezapomeňte na subreporty) - Otevřete aplikaci Tiskove_vystupy.mdb. Přejdete na kartu Převod TV Varia 9.0.
- Vyplníte pole odshora dolů.
Do pole Zadejte zdroj zadejte cestu k pracovní db.
Do pole Složka TF zadejte cestu, kde budou vytvořeny soubory obsahující TF. Implicitně by to měla být složka C:\Program Files\Vario10\Data\Tiskove_formulare\NazevModulu\NazevAgendy, kde NazevModulu\NazevAgendy můžete také nahradit vlastní složkou (například Zakaznicke_TF). - Převeďte TF. Při zahájení převodu se může zobrazit okno přihlášení do Accessu (pokud máte účet administrátora ve výchozí databázi pracovních skupin (systém.mdw) zabezpečen heslem).
- Zkontrolujte všechny převedené TF (otevřít soubor TF, zkompilovat, spustit Vario 10 a ověřit funkčnost TF). Zpravidla je nutné přidat do souboru TF uživatelské funkce volané v dotazech nebo počítaných výrazech.
Převod sestav a grafů
- Otevřete aplikaci Tiskove_vystupy.mdb. Přejdete na kartu Převod TV Varia 9.0.
- Vyplníte pole odshora dolů.
Do pole Zadejte zdroj zadejte cestu k modulu, který obsahuje sestavy (pracovní db není u sestav/grafů potřeba) - Převeďte sestavy/grafy.
- Zkontrolujte funkčnost sestav/grafů.