Zdrojový kód wiki Proměnné (Variables)

Naposledy změněno Martin Mahr 2025/02/11 10:25

Show last authors
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]]