Sagar Nikam
Sagar Nikam

Reputation: 1758

conditional statements not working in expression editor

I want to check current month to many condition as below. so I take TextField ,edit its pattern to MM & in expression editor edit below code

new java.util.Date()>=4 && new java.util.Date() <= 7 ? "Q1" :  
new java.util.Date()>=8 && new java.util.Date() <=11  ? "Q2" : "Q3"

but it gives error

Error filling print... Error evaluating expression :      Source text : new java.util.Date()>=4 && new java.util.Date() <= 7 ? "Q1" : new java.util.Date()>=8 && new java.util.Date() <=11  ? "Q2" : "Q3" 
Setting up the file resolver..

but when I give expression like

new java.util.Date()== 4 ? "Q1" : "Q2"

It works fine.

Does iReport not able to resolve multiple conditions ? or should I give different TextField with single condition ?

Upvotes: 0

Views: 1672

Answers (4)

Ismail Sahin
Ismail Sahin

Reputation: 2710

are you sure new java.util.Date() is just give you the month.

try this it will give you the moth
(new SimpleDateFormat("M")).format(new java.util.Date())

also you can use yyyy(year) or d(date) to check and Integer.parse(...month...) or Date.parse(...month...) maybe needed, if you don't have your Qs as integer or date.

Upvotes: 2

cjava
cjava

Reputation: 658

can you please try putting the expression in brackets like

(new java.util.Date()>=4 && new java.util.Date() <= 7 )? "Q1" : ( (new java.util.Date()>=8 && new java.util.Date() <=11 ) ? "Q2" : "Q3")

Upvotes: 1

Sharad
Sharad

Reputation: 3548

You can use multiple condition like this

new java.util.Date() >= 4  ?
 "Q1" :
new java.util.Date() <= 7  ?
 "Q2" :  
new java.util.Date() >= 8  ?
 "Q3" :
 "Q4"

Upvotes: 0

EOC
EOC

Reputation: 315

Try using calendar instead.

(Calendar.getInstance()).get(Calendar.MONTH)>=3 && (Calendar.getInstance()).get(Calendar.MONTH)>=6 ? "Q1" :
(Calendar.getInstance()).get(Calendar.MONTH)>=7 && (Calendar.getInstance()).get(Calendar.MONTH)>=10  ? "Q2" : "Q3"

Upvotes: 1

Related Questions