Promotic

PmaReport - Podrobný popis objektu

Viz: objekt PmaReport.

Objekt slouží k vytváření reportů z HTML, XML nebo TXT vzorových souborů (tyto vzory musí mít tvar popsaný v Popis zdrojového souboru objektu PmaReport). Reporty vytvořené objektem PmaReport pak lze použít například k následujícím účelům:
- zobrazovat v okně aplikace PROMOTIC nebo na Web klientovi. Pro některé účely je lepší pro zobrazení použít PmaReport než objekt PmaPanel.
Jedná se zejména o případy, kdy je potřeba zobrazovat velké množství údajů v tabulkové podobě, které se nemění příliš často. Okno objektu PmaReport lze otevřít úplně stejně jako okno objektu PmaPanel, tzn. metodou Pm.CreateView (viz Příklad2).
- tisknout na tiskárnu, tzn. vytvářet například několikastránkové tiskové reporty. Lze to jednoduše provést metodou PmaReport.SaveToString a Pm.PrintHtmlPage (viz Příklad2).
- uložit na disk v podobě HTML (XML,TXT) souboru metodou SaveToFile.


Objekt PmaReport pomocí výrazů a klíčových slov provede nad zdrojovým vzorem reportu (HTML, XML, TXT stránka) textovou transformaci do podoby výsledného reportu. Transformace se provede naplněním hodnot, vlastností a stylů tagů (pomocí klíčových slov) s možností rozvinutí nebo naopak skrytí části vzoru reportu. Výsledný report může být zobrazen, vytisknut nebo vrácen v textové proměnné.

Z hlediska aktualizace novými hodnotami existují dva základní způsoby použití objektu PmaReport:
1. Aktualizovat reportu až při vlastním čtení výsledného reportu:
K tomuto účelu lze použít událost onReportRequest, která se vyvolá vždy na začátku čtení obsahu reportu. V této události lze dodat změněné hodnoty klíčových slov (metodou SetKeyValue), načíst jiný soubor se vzorem nebo znovu načíst stávající soubor (změnou vlastnosti SourceFile). Pokud došlo ke změně hodnot klíčových slov a/nebo vzoru, pak je nutno zapsat do výstupního parametru pEvent.Modify hodnotu 1, která způsobí vlastní vytvoření aktualizovaného reportu. Viz Příklad1.
2. Aktualizovat report nezávisle na vlastním čtení výsledného reportu:
V tomto režimu se aktualizace reportu provádí z aplikace pomocí skriptovacích metod, bez ohledu na to, zda se report skutečně vyčítá nebo nevyčítá. Skriptem lze dodat změněné hodnoty klíčových slov (metodou SetKeyValue), načíst jiný soubor se vzorem nebo znovu načíst stávající soubor (změnou vlastnosti SourceFile). Pokud došlo ke změně hodnot klíčových slov a/nebo vzoru, pak je nutno provést vlastní vytvoření aktualizovaného reportu metodou MakeReport. Tímto způsobem může být aktualizace reportu řízena z jiné části aplikace, například z PmaTimer (vhodné například pro periodické zpracování reportů pro tisk). Viz Příklad2.


Příklad1:
Příklad na aktualizaci reportu při vlastním čtení (podle 1. způsobu použití). Skript je umístěn v události onReportRequest. Hodnota klíčového slova color bude v zobrazení zdrojového souboru nahrazeno výrazem #ff0000.
JavaScriptVBScriptVyber a zkopíruj do schránky

pMe.SetKeyValue("color", "#ff0000");
pEvent.Modify = 1;
Příklad2:
Příklad na aktualizaci reportu nezávisle na čtení (podle 2. způsobu použití). Skript může být kdekoliv mimo událost onReportRequest. Hodnota klíčového slova color bude v zdrojovém souboru nahrazena RGB barvou #ff0000.
JavaScriptVBScriptVyber a zkopíruj do schránky

var oReport, oWorkspace, sReport;
oReport = pMe.Pm("/Report");   // Cesta k objektu PmaReport
oReport.SetKeyValue("color", "#ff0000");
oReport.MakeReport();

// Dále bude obsah objektu PmaReport zobrazen v okně pracovní plochy (v objektu PmaWorkspace):
oWorkspace = pMe.Pm("/Workspace");   // Cesta k objektu PmaWorkspace
var oCreator = Pm.CreateView(oWorkspace, "/Report", "", "target:main;");
oCreator.Open();

// Dále bude obsah objektu PmaReport odeslán na tisk:
sReport = oReport.SaveToString("");
Pm.PrintHtmlPage(sReport, "sourcetype:htmlstring;printer:select;");
Příklad3:


V objektu existuje načtený a předzpracovaný vzor reportu, dále sada klíčových slov s hodnotami parametrizující transformaci (jedná se o páry klíč a hodnota) a dále pak poslední výsledný report v cache objektu. Pomocí klíčových slov lze do reportu dostat i velké množství aktuálních hodnot z aplikace. Lze předávat jednotlivé hodnoty jakéhokoliv datového typu (Variant), ale i 1-rozměrné pole a 2-rozměrné pole. Použití klíčových slov při transformaci vzoru reportu do výsledného reportu - viz Popis zdrojového souboru objektu PmaReport.

K podobnému účelu jako objekt PmaReport slouží objekt PmaWebDir. Je však mnohem jednodušší a méně obecnější. Slouží pouze pro nabízení statických HTML stránek s jednoduchou možností záměny klíčových slov.

Srovnání objektu PmaReport s objektem PmaPanel:
Výhody objektu PmaReport:
- snadná tvorba vícestránkových reportů určených pro tisk.
- snadné vytvoření reportů s velkým počtem údajů.
- texty se přizpůsobují šířce stránky (pokud je to HTML report).
Nevýhody objektu PmaReport:
- při tvorbě je potřebná základní znalost HTML
- při tvorbě je potřebná znalost příkazů popsaných v Popis zdrojového souboru objektu PmaReport.
- není vhodné pro zobrazení s častým obnovováním dat.
© MICROSYS, spol. s r.o.