2013-11-21 27 views
1

有沒有辦法在iReport中有條件地添加參數?如何在iReport中有條件地傳遞參數?

在我的一個報告中,我想根據它的值傳遞參數。以下是報告的查詢:

選擇名稱,DESI,從學生 類,其中類= $ P {CALSS} 和joinYear = $ P {joinYear}

我想補充joinYear條件只有joinYear如果joinYear的值爲空,則只應用一個條件。

有沒有辦法檢查iReport中的報表查詢條件?

+0

可能重複在Ireport多選參數的空值?](http://stackoverflow.com/questions/9782107/how-to-give-condition-for-null-values-of-mult i-select-parameter-in-ireport)&[帶參數的請求報告](http://stackoverflow.com/q/17663860/876298)&[JasperReports中的條件Where子句](http://stackoverflow.com/q/12324706/876298)&[可選where子句jasper報告](http://stackoverflow.com/q/19401825/876298) –

回答

2

你可以試試這個: -

 SELECT name, 
      desi, 
      class 
     FROM student 
     WHERE (class=$P{calss} or $P{calss} is null) 
      AND (joinYear=$P{joinYear} or $P{joinYear} is null) 

在這種情況下,任何參數,你會通過只參數值將在查詢中傳遞。

1

你可以嘗試一個子報表。創建一個虛擬的主要報告,將您的報告稱爲子報告,虛擬查詢如

select 1 as dummy 

並添加一個變量即。 $V{joinYearCond}與表達

($P{joinYear} == "" || $P{joinYear} == null) ? "" : "and joinYear = " + $P{joinYear} 

還可以修改報告中的查詢(今子報表)

select name,desi,class from student where class=$P{calss} $P!{joinYearCond} 

對於參數$P{joinYearCond}合格$V{joinYearCond}值。它看起來不漂亮,但它會工作。

0

創建一個新的參數joinYear_query並設置爲默認值表達

$P{joinYear}==null ? " true": " joinYear=".concat($P{joinYear}.toString()) 

然後

select name,desi,class from student where class=$!P{calss} AND $P!{joinYear_query} 

你可以看到更多的細節: Accepting null values as parameters in jasper report

的【如何給條件