Wiki source code of Proměnné (Variables)
Last modified by Martin Mahr on 2025/02/11 10:25
Show last authors
author | version | line-number | content |
---|---|---|---|
1 | = Pořadí = | ||
2 | |||
3 | Změny proměnných jsou vyhodnocovány v pořadí od shora dolů: | ||
4 | |||
5 | [[image:1722593306704-227.png]] | ||
6 | |||
7 | = Hodnota Null = | ||
8 | |||
9 | Vždy je potřeba v proměnné kontrolovat jestli nemůže být vstupní hodnota NULL: | ||
10 | |||
11 | Výstup se i bez toho může zdát plně funkční a většinou to Jaspersoftu nevadí, ale někdy může docházet k anomáliím, které se projeví až ve vysokém počtu dat. (pozorováno až u zákazníka s 500 000 svazky, doteď si toho nikdo na běžně velkých datech nevšiml). | ||
12 | |||
13 | Třeba tato chybějící kontrola způsobovala problém, kdy se svazky seskupovali do jiné lokace | ||
14 | |||
15 | [[image:1722593311051-553.png]] | ||
16 | |||
17 | = Součet desetinných čísel (Kč) = | ||
18 | |||
19 | Vždy používat **BigDecimal**. | ||
20 | |||
21 | Nepoužívat Jasperreport funkce jako je třeba SUM, ale vybírat **No Calculation Function **- jinak dochází k mezizaokrouhlování, které zkreslí celkový součet. (ne vždy k tomu musí dojít - záleží na datech) | ||
22 | |||
23 | Nastavit počáteční hodnotu pomocí **BigDecimal.ZERO**. | ||
24 | |||
25 | Sčítání provádět ručně v Expression: | ||
26 | |||
27 | Na příkladu níže k navýšení probíhá pokud je svazek COMMON a není periodikum - jinak je zachována původní hodnota price_summary viz konec. | ||
28 | |||
29 | Pokud svazek podmínku splňuje, tak je proměnná price_summary navýšená pomocí ADD, kde k navýšení dojde pouze pokud je cena vyplněna jinak se přičte pouze nula BigDecimal.ZERO. | ||
30 | |||
31 | (($F{_THIS}.getItem().getType().name().equals("COMMON")) && ($F{_THIS}.getItem().isPeriodical() == false))? | ||
32 | **$V{price_summary}.add($F{_THIS}.getItem().getPrice() != null ? $F{_THIS}.getItem().getPrice() : BigDecimal.ZERO) : $V{price_summary}** | ||
33 | |||
34 | [[image:1722593317049-783.png]] |