Tôi muốn làm một so sánh như:làm so sánh nếu khác trong JasperReports
if <field> == 0 then "-"
Ai đó có thể cho tôi biết cú pháp sử dụng JasperReports?
Tôi muốn làm một so sánh như:làm so sánh nếu khác trong JasperReports
if <field> == 0 then "-"
Ai đó có thể cho tôi biết cú pháp sử dụng JasperReports?
iReport (JasperReports) sử dụng Ternary operator.
IF boolean condition THEN
execute true code
ELSE
execute false code
END IF
trở thành:
boolean condition ? execute true code : execute false code
Ví dụ, nếu bạn đã tạo ra một biến với các biểu thức sau đây:
$F{column_value}.intValue() == 42 ? "Life, Universe, Everything" : "Naught"
Sau đó, giá trị của biến sẽ là "Cuộc sống, vũ trụ, Tất cả mọi thứ "nếu và chỉ khi, giá trị số nguyên của $F{column_value}
bằng 42.
Ở đâu những điều có được một chút ngớ ngẩn là khi bạn phải có điều kiện lồng nhau. Đối với những, đặt điều kiện lồng nhau trong ngoặc và trên một dòng riêng biệt:
condition1 ?
(condition2 ? true_code2 : false_code2) :
false_code1
Vì vậy, khi bạn cần phải làm nhiều trong số họ:
condition1 ?
(condition2 ?
(condition3 ? true_code3 : false_code3) :
false_code2) :
(condition4 ? true_code4 : false_code4)
ví dụ về biểu hiện trong iReport:
(
$F{foo} == 0 ?
"Planned" :
$F{foo} == 1 ?
"Reserved" :
$F{foo} == 2 ?
"Canceled" :
$F{foo} == 3 ?
"Absent" :
$F{foo} == 4 ?
"Complete" :
"Unknown"
)
Bạn có thể sử dụng điều kiện if-else như thế này trong Jasper Report: nếu tên khách hàng không ghi '-' (apsent) khác viết tên khách hàng của bạn. Hãy cẩn thận cho loại dữ liệu trường của bạn!
<textFieldExpression class="java.lang.String"><![CDATA[$F{CustomerName} == null ? '-' : $F{CustomerName}]]></textFieldExpression>