条件语句在表达式编辑器中不起作用

时间:2012-12-12 07:04:26

标签: ireport

我想检查当前月份到多个条件,如下所示。 所以我采用TextField,将其模式编辑为MM&在表达式编辑器编辑下面的代码

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

但是它给出了错误

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..

但是当我给出表达式

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

工作正常。

iReport无法解决多种情况吗?或者我应该在单一条件下给出不同的TextField

4 个答案:

答案 0 :(得分:2)

你确定新的java.util.Date()只是给你一个月。

试试这个会给你飞蛾的 (新的SimpleDateFormat(&#34; M&#34;))。format(new java.util.Date())

你也可以用yyyy(年)或d(日期)来检查 如果您没有将Qs作为整数或日期,则可能需要Integer.parse(... month ...)或Date.parse(... month ...)。

答案 1 :(得分:1)

尝试使用日历。

(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"

答案 2 :(得分:1)

你可以试着把表达式放在括号中,如

(new java.util.Date()&gt; = 4&amp;&amp; new java.util.Date()&lt; = 7)? “Q1”:( (new java.util.Date()&gt; = 8&amp;&amp; new java.util.Date()&lt; = 11)? “Q2”:“Q3”)

答案 3 :(得分:0)

你可以使用像这样的多个条件

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