2016-11-08 8 views
1

WHERE句の一部として「開始日」パラメータを使用するJasperReports 6.3レポートクエリがあります。パラメータはnullでもかまいません。これは本質的に「最も早い日付」を意味します。queryString内での三項式の使用

ロジックは非常に簡単です:

WHERE MyDateField > ($P{StartDate} == null ? DateTime(0L) : $P{StartDate}) 

しかし、JasperReportsのは、データベースに対してクエリを実行しようとすると、これは例外を生成します。

SQLServerException: The value is not set for the parameter number 3

側の注意点としては、それは次のようになりますJaspersoft Studioで生成されたSQLをログに記録してデバッグを支援する方法を理解するのに便利です。

答えて

0

で式を使用することはできません。queryString別のパラメータを作成して、必要な式が含まれている必要があります。

コードは次のようになりますあなたの場合:

<parameter name="StartDate" class="org.joda.time.DateTime"/> 
... 
<parameter name="dateFilter" class="org.joda.time.DateTime"> 
    <defaultValueExpression><![CDATA[$P{StartDate} == null ? DateTime(0L) : $P{StartDate}]]></defaultValueExpression> 
</parameter> 
<queryString> 
    <![CDATA[SELECT * FROM sometable WHERE MyDateField > $P{dateFilter}]]> 
</queryString> 

あなたがここにパラメータを使用して詳細情報を見つけることができます: