1. 程式人生 > >iReport-JasperReport報表開發:使用主Dataset的fields欄位作為sub dataset的sql引數

iReport-JasperReport報表開發:使用主Dataset的fields欄位作為sub dataset的sql引數

使用的是JasperReport + iReport 5.0 在main dataset和sub dataset中都可以設定sql語句,在其設定的sql語句中,可以使用其dataset內部的parameter的引數,main dataset中的引數很好獲得,因為在填充的時候會傳一個string-object的map,這裡面就是parameters,而sub dataset的parameter的值需要傳輸進去,例子中是使用field的值作為sub dataset的parameter的值,並使用這個parameter進行sql語句,並將讀取出的資料繪製成crosstab交叉報表,這樣就能生成級聯的報表了,具體的傳入方式在iReport中配置如下:
  1. 右鍵Report Inspector中的報表,選擇Add Dataset新增一個sub dataset
  2. 在這個新建的sub dataset中新增parameter,這個parameter將在sub dataset的sql中作為引數出現,它的值來自main dataset的field
  3. detail band
    中新增一個crosstab元件,這裡需要注意的是平常情況下crosstab都是新增在summary band中,而這裡是新增在detail band中,因為我們需要不同的field值作為sub dataset的parameter
  4. 右鍵單擊這個detail band中的crosstab,選擇crosstab data,在底下Dataset run中選擇parameters標籤頁,新增第二部建立的parameter,並將值設為$F{XXX},這裡XXX是main dataset中需要用來作為sql引數的field的名字
  5. 右鍵第一步建立的sub dataset,選擇edit query,在其中編寫需要的sql,這裡可以使用第二部建立的引數,使用方式也是直接$P{XXX}即可
這樣配置就可以將main dataset的field的值傳入到sub dataset中,而第五步即使用這個傳入的值作為sql的引數,這樣就會實現級聯的sql查詢,由於crosstab放在detail中,也就是說detail中每個不同的field值都會進行一次sql操作,生成一個crosstab