Samozřejmě BI Publisher umožňuje formátovat numerické položky, dokonce 2 způsoby - tak jak uvádí standardní BI Publisher dokumentace:
- Microsoft Word's Native number format mask
- Oracle's format-number function
Jak ale zajistit, aby byl použit vždy fixní znak pro oddělovače, nezávisle od nastavení locales?
Samozřejmě první metodou, která mě napadla je, provést konverzi numerických položek na řetězec již v rámci definice SQL dotazu pro datový zdroj sestavy v BI Publisheru za použití Oracle konverzní funkce TO_CHAR, kde mám „pod kontrolou“ i použití znaků oddělovačů u konvertovaného řetezce z čísla (TO_CHAR(SLOUPEC,'999G999D99', 'NLS_NUMERIC_CHARACTERS = '', ''') – kde první znak v parametru NLS_NUMERIC_CHARACTERS představuje oddělovač desetinného místa, druhý znak oddělovač řádů). Nevýhodou tohoto řešení je, že pokud takto již na úrovni SQL dotazu změníte datový typ sloupce z NUMBER na znakový, nemůžete v rámci definice templatu sestavy s touto položkou operovat jako s číslem a tím pádem provádět s touto položkou agregační operace (součty, subsoučty za skupiny), což je přesně to, co by nám při definici sestav chybělo.
Zapátral jsem tedy na všemocném Internetu a v rámci diskusního fóra pro BI Publisher na Oracle Technology Network jsem našel příspěvek, který se zdál, že náš problém řeší (http://forums.oracle.com/forums/thread.jspa?threadID=603514&tstart=0).
Po pár vyzkoušení metodou pokus-omyl jsme nakonec (použitím této metody) dospěli ke kýženému výsledku – jelikož má toto řešení určité aspekty, na které je potřeba si dát pozor, stručně toto řešení (i s upozorněním, co je potřeba si pohlídat) popíšu.
1. Nejprve je nutné v rámci templatu sestavy (např. hned na začátku templatu) následující xsl tag:
Výsledkem je pak kýžené použití oddělovačů, nezávislé od nastavení prostředí:
Žádné komentáře:
Okomentovat