在兩個地方可以看到 Filter Expressioin,第一個是報表的屬性,第二個是 Report Query 視窗。
開啟 Filter Expression 後,可以看到四個區塊,上面區塊可以手工寫入 Expression,也可以依照123的順序自動產生 Expression。
在這邊使用 Parameter 來增加一點實用性,回到主畫面,在左邊 Report Inspector 的 Parameter 建立一個名為「startsWith」的參數。
選取該參數後可以在主畫面右邊的 Properties 視窗看到相關屬性,在「Default Value Expression」 輸入"J",記得,要依照 Java 的方式輸入,也就是字串要加雙引號。
完成後再回到 Filter Expression 建立如圖所示的 Expression,記得,不能用「and」,只能用「&&」。
完工,預覽會提示參數 startsWith 的值,可以用 Use default 使用剛建立的預設值,也就是"J"。
噹噹,有用。
那改用 Where 呢?
也是可以,除了語法不一樣外,還有一些差異,例如不能將 $P 與 % 一起使用。
where FIRSTNAME like '$P{startsWith}%'這樣是不能編譯的。
上面的 SQL 也有個小問題,就是 substr(..., 0, 1),若 $P{startsWith} 不是一個字元就爆了,也可以再改進啦。
select * from address所以要用 Where 或者是 Filter Expression,就看哪個語法好寫囉,Where 當然是 SQL 語法,Filter Expression 則可以是 Java、Javascript 或者 Groovy。
where substr(FIRSTNAME,0,length($P{startsWith})) = $P{startsWith}
and LASTNAME like 'M%'
order by lastname
沒有留言:
張貼留言