I have read a few of articles on the community but I fail to implement them. For now I have 2 variables: firstdayoflastmonth and lastdayoflastmonth for firstdayoflastmonth I am using this code: ( $P{cal}.set($P{runDate}.getYear()+1900, $P{runDate}.getMonth(), $P{runDate}.getDate()) || $P{cal}.add(Calendar.MONTH, -1) || $P{cal}.set(Calendar.DAY_OF_MONTH, 1) ) ? null : $P{cal}.getTime() I aslo created 2 parameters: runDate with value expression new Date() and cal with value expression Calendar.getInstance() When I run the report, I get this error: net.sf.jasperreports.engine.JRException: net.sf.jasperreports.engine.fill.JRExpressionEvalException: Error evaluating expression for source text: ( $P{cal}.set($P{runDate}.getYear()+1900, $P{runDate}.getMonth(), $P{runDate}.getDate()) || $P{cal}.add(Calendar.MONTH, -1) || $P{cal}.set(Calendar.DAY_OF_MONTH, 1) ) ? null : $P{cal}.getTime() at com.jaspersoft.studio.editor.preview.view.control.ReportControler.fillReport(ReportControler.java:548) at com.jaspersoft.studio.editor.preview.view.control.ReportControler.access$20(ReportControler.java:523) at com.jaspersoft.studio.editor.preview.view.control.ReportControler$5.run(ReportControler.java:404) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55) Caused by: net.sf.jasperreports.engine.fill.JRExpressionEvalException: Error evaluating expression for source text: ( $P{cal}.set($P{runDate}.getYear()+1900, $P{runDate}.getMonth(), $P{runDate}.getDate()) || $P{cal}.add(Calendar.MONTH, -1) || $P{cal}.set(Calendar.DAY_OF_MONTH, 1) ) ? null : $P{cal}.getTime() at net.sf.jasperreports.engine.fill.JREvaluator.evaluate(JREvaluator.java:290) at net.sf.jasperreports.engine.fill.JRCalculator.evaluate(JRCalculator.java:616) at net.sf.jasperreports.engine.fill.JRCalculator.initializeVariable(JRCalculator.java:490) at net.sf.jasperreports.engine.fill.JRCalculator.initializeVariables(JRCalculator.java:313) at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReportStart(JRVerticalFiller.java:237) at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:115) at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:582) at net.sf.jasperreports.engine.fill.BaseFillHandle$ReportFill.run(BaseFillHandle.java:123) at java.lang.Thread.run(Thread.java:745) Caused by: groovy.lang.MissingMethodException: No signature of method: java.lang.String.getYear() is applicable for argument types: () values: [] Possible solutions: getChars(), getChars(int, int, [C, int), getAt(groovy.lang.EmptyRange), getAt(groovy.lang.IntRange), getAt(java.lang.String), getAt(int) at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:58) at org.codehaus.groovy.runtime.callsite.PojoMetaClassSite.call(PojoMetaClassSite.java:49) at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:117) at Engie_Total_Alarms_1511272037717_2640.evaluate(calculator_Engie_Total_Alarms_1511272037717_2640:191) at net.sf.jasperreports.engine.fill.JREvaluator.evaluate(JREvaluator.java:276) ... 8 more