Uložení dat z reportu do databáze |
Top Previous Next |
Nyní již umíme ukládat a načítat report do DB a používat šablonu. Nyní ještě "posbíráme" data z MISreportu a uložíme je do databáze.
Vraťte se tedy do MIS a vyberte některou z vytvořených šablon. Přepněte se do design režimu a na záložku Kód. V property editoru vyberte ReportProperty: TReportProperty a poklepejte na prázdné místo u události OnReportClose. Editor vygeneruje kód pro tělo procedury OnReportClose. V této události posbíráme data z reportu a uložíme je do DB.
Víme že data v reportu začínají na řádku 8, vytvoříme si tedy konstantu s touto hodnotou, k ničemu to není, ale vypadá to cool programátorsky a když šablonu posuneme (což se zřejmě nikdy nestane), stačí modifikovat konstantu a není třeba hledat v kódu. Proměnnou fDontAsk si vysvětlíme dále.
Na řádku 6 máme tedy vygenerované záhlaví procedury OnReportClose, která se vyvolá vždy při uzavření reportu. Na řádku 12 otestujeme jestli byl report modifikován (GetModified) a jestli je report volán z tlačítka "Kalkulace" - předali jsme tedy parametry primárního klíče v params (viz. Vytvoření tlačítka "Kalkulace" a volání reportu ) Následuje dotaz zda opravdu uložit změny (ř. 17). Zaresetujeme příznak modifikace reportu (ř. 20) a nastavíme modalresult Formu na mrOk. Do proměnných si uložíme předaný primární klíč z onabit.
Pokud nabídka již obsahovala nějaké řádky v onabidsluz, tak je smažeme
Nyní už stačí jen projít všechny řádky reportu od fromRow do počtu řádků reportu a uložit do DB. Na řádku 43 ještě otestujeme jestli vkládaná položka existuje v gsluzby. Ukládáme jen položky které obsahují nějaká data ve sloupcích "A" a "K". Ostatní kód je standardní INSERT do databáze.
V řádcích 73-81 řešíme klik na buňku M2 kam jsme umístili InSheet Talčítko "Uložit" (viz. Report Property - Control - Style = rcsButton a Caption = Uložit ), kde nastavím že chceme ignorovat dotaz na uložení, nastavíme ModalResult a report zavřeme pomocí Close.
Před spuštěním reportu ještě nastavíme fDontAsk na false (ř. 85)
Tím je celá implementace kalkulací pomocí šablon hotová.
|