Wiki source code of Proměnné (Variables)

Version 1.1 by Jan Šimeček on 2024/08/02 12:07

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:1709208091078-798.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:1709208096476-566.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:1709208102258-712.png]]