Wiki source code of Proměnné (Variables)

Last modified by Martin Mahr on 2025/02/11 10:25

Hide last authors
Jan Šimeček 2.1 1 = Pořadí =
Jan Šimeček 1.1 2
3 Změny proměnných jsou vyhodnocovány v pořadí od shora dolů:
4
Jan Šimeček 3.1 5 [[image:1722593306704-227.png]]
Jan Šimeček 1.1 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
Jan Šimeček 3.1 15 [[image:1722593311051-553.png]]
Jan Šimeček 1.1 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
Jan Šimeček 3.1 34 [[image:1722593317049-783.png]]