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á.