2011-06-14 52 views
1

我正在致力於通過oracle.jdbc.driver.OracleDriver連接到Oracle數據庫的iReport 2.0.4中的報告,該報告基於工會成員身份返回條目列表。該報告將開始日期,結束日期和聯合會名稱作爲參數。查詢的基本結構是iReport 2.0.4:做字符串類型參數不適用於SQL查詢?

select 
    ... 
from 
    ... 
where 
    union_opt_in_dt <= $P{EndDate} and 
    union_opt_out_dt >= $P{StartDate} and 
    union_name = $P{UnionName} 
... 

其中StartDateEndDate具有類型java.lang.DateUnionName具有類型java.lang.String

問題是,如果我使用UnionName參數並傳入聯合名稱(例如「AFSCME」),則查詢不會返回任何數據。如果我刪除UnionName參數和硬編碼的工會名稱,如

where 
    union_opt_in_dt <= $P{EndDate} and 
    union_opt_out_dt >= $P{StartDate} and 
    union_name = 'AFSCME' 

然後我得到我期待該聯盟名稱的行。

那麼爲什麼日期參數工作,但不是字符串參數?有沒有一種方法需要調用字符串參數(例如.trim())以使其起作用?

UPDATE,固定

找到一個答案,在另一個論壇能否解決不同的問題;我要做一個即時替換查詢參數(術語?),所以它需要

where 
    union_opt_in_dt <= $P{EndDate} and 
    union_opt_out_dt >= $P{StartDate} and 
    union_name = '$P!{UnionName}' 

工程。不知道我理解它的邏輯(截至一週半之前,我從來沒有聽說過聽過Jasper Reports的),但至少我可以繼續前進。

修訂更新,固定

好了,上述方案是不太我所需要的;它只會取代默認值,不一定是通過的內容。

爲什麼日期工作,但不是工會的名稱?我確定參數中的值與數據庫中的字符完全一致,字符是字符。

回答

0

在通過之前嘗試修剪UnionName

+0

我試着在查詢中使用'$ P {UnionName} .trim()',但沒有快樂;我運行報告時出現語法錯誤。 – 2011-06-14 13:41:50

+0

在將其交給報告之前,嘗試修剪「UnionName」的參數值 – 2011-06-15 08:19:49

相關問題