2015-06-30 140 views
0

我使用碧玉報告工作室,我有兩個參數過濾XML文件報告

  1. XML源文件(見下文)上市用戶的姓名以及他們是否有活動(ACTIVE_USER = 1 )或非活動(ACTIVE_USER = 0)
  2. 輸入源變量Active_Selection由用戶選擇。三種可能性是 「非活躍用戶」(值= 0), 「活躍用戶」(值= 1), 「所有用戶」(值= 2)

XML文件是如下:

<ROOT> 
<USER> 
    <NAME>Patrick</NAME> 
    <ACTIVE_USER>1</ACTIVE_USER> 
</USER> 
<USER> 
    <NAME>Fred</NAME> 
    <ACTIVE_USER>0</ACTIVE_USER> 
</USER> 
</ROOT> 

我想根據Active_Selection

下面的代碼使用XPath來過濾我的XML允許用戶選擇活性或非活躍用戶

<parameter name="Active_Selection" class="java.lang.Integer"/> 
    <queryString language="xPath"> 
     <![CDATA[/ROOT/USER[ACTIVE_USER=$P{Active_Selection}]]]> 
    </queryString> 

但是,如何讓用戶選擇「活動」或「非活動」或「所有用戶」?

回答

0

此代碼有效。

注意使用默認值使用參數來存儲中間計算

<parameter name="MinActive" class="java.lang.Integer"> 
     <defaultValueExpression><![CDATA[($P{Active_Selection}==0)?0:($P{Active_Selection}==1?1:0)]]></defaultValueExpression> 
    </parameter> 
    <parameter name="MaxActive" class="java.lang.Integer"> 
     <defaultValueExpression><![CDATA[($P{Active_Selection}==0)?0:($P{Active_Selection}==1?1:2)]]></defaultValueExpression> 
    </parameter> 
    <queryString language="xPath"> 
     <![CDATA[/ROOT/USER[ACTIVE_USER>=$P{MinActive} and ACTIVE_USER<=$P{MaxActive}]]]> 
    </queryString>