我正在使用ireport处理jasper报告,因为我从用户那里获取了两个输入日期START_DATE和END_DATE。
现在我想要的是END_DATE应该是START_DATE月份的最后一个日期。 我在互联网上搜索但是我无法写入/得到一个条件,我可以在END_DATE参数的默认表达式中写入。
有人可以建议我这样做吗?
我尝试使用带有附加参数DATE_DIFF的SQL查询来检索仅一个月的数据。我的SQL查询如下所示:
SELECT EAD_PGM_CASH_SW, EAD_PGM_FS_SW, EAD_PGM_MCL_SW,COUNT(*) as CNT
FROM EAD_CASE A, EAD_PROGRAM B
WHERE A.UNIQUE_TRACE_HI = B.TO_EAD_CASE_LNK_HI
AND A.UNIQUE_TRACE_LO = B.TO_EAD_CASE_LNK_LO
AND A.EAD_CASE_ID = B.EAD_PGM_CASE_NUM
AND A.EAD_CS_BATCH_DT >= $P{START_DATE}
AND A.EAD_CS_BATCH_DT <= $P{END_DATE}
AND $P{START_DATE}< $P{END_DATE}
AND $P{DATE_DIFF} <= 30
AND (B.EAD_PGM_CASH_SW, B.EAD_PGM_FS_SW, B.EAD_PGM_MCL_SW) IN (('N','Y','N'),('Y','Y','Y'),('N','N','Y'),('N','Y','Y'),('Y','N','Y'), ('Y','N','N'))
GROUP BY EAD_PGM_CASH_SW, EAD_PGM_FS_SW, EAD_PGM_MCL_SW
ORDER BY EAD_PGM_CASH_SW, EAD_PGM_FS_SW, EAD_PGM_MCL_SW
但这种方式不合适。我想在&#34;默认值表达式&#34;中使用一些表达式来获取它。在ireport的领域。
答案 0 :(得分:1)
查看此博客 - Date calculation in iReport。
我试过这个并且工作正常。这是我的jasper文件 -
<?xml version="1.0" encoding="UTF-8"?>
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="report1" language="groovy" pageWidth="595" pageHeight="842" whenNoDataType="AllSectionsNoDetail" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="d6133c1e-7de4-4386-9c92-a6c4f7cece05">
<property name="ireport.zoom" value="1.0"/>
<property name="ireport.x" value="0"/>
<property name="ireport.y" value="0"/>
<parameter name="cal" class="java.util.Calendar" isForPrompting="false">
<defaultValueExpression><![CDATA[Calendar.getInstance()]]></defaultValueExpression>
</parameter>
<parameter name="lDate" class="java.util.Date" isForPrompting="false">
<defaultValueExpression><![CDATA[(
$P{cal}.set(new Date().getYear()+1900, new Date().getMonth(), new Date().getDate()) ||
$P{cal}.set(Calendar.DAY_OF_MONTH, $P{cal}.getActualMaximum(Calendar.DAY_OF_MONTH))
)
? null : $P{cal}.getTime()]]></defaultValueExpression>
</parameter>
<columnHeader>
<band height="46" splitType="Stretch">
<textField>
<reportElement x="127" y="0" width="291" height="46" uuid="bb060132-5aa4-4a75-817a-650f672c707c"/>
<textFieldExpression><![CDATA[$P{lDate}]]></textFieldExpression>
</textField>
</band>
</columnHeader>
</jasperReport>
注意 - 我已使用new Date()
进行测试。