由於JasperReport報表不允許在一張報表中使用多個數據源的字段值,所以當報表中需要藉助其他數據源來顯示信息的時候,我們就可以採用子報表的方式實現。
工具/原料
JasperReport
方法/步驟
以下是報表的主報表,需要在主報表中顯示當前操作用戶所在的單位,由於獲取當前用戶所在的單位需要通過另一sql語句查詢完成,這是我們採用子報表的方式實現
創建子報表:
創建新的報表getOrgName(在主表中需要顯示的部分),同樣就有參數設置,子表的參數由父表傳值(由於只需要在主表顯示單位名稱,所以只顯示一個字段在Detail中)。
將子報表插件SubReport拖入要顯示的區域內,彈出如下窗口
在本窗口中你可以自己創建一個新的報表,也可以選擇已經創建過的報表作為子報表,由於子報表已經存在,這裡直接點擊選擇,選擇剛剛創建的子報表,然後點擊下一步,彈出如下窗口:選擇改子報表的jdbc連接,這裡選擇同主報表一樣。然後點擊下一步
為子報表的參數設置值(主報表向子報表傳參),點擊Add添加參數信息,設置參數的名稱以及參數值,參數值通過表達式獲取,將主報表的參數作為值傳遞給子報表,參數名稱的設置要跟子報表的參數名稱保持一致:
參數這隻完成後點擊finish,子報表會顯示在主報表的相應的區域,調整子報表的樣式顯示位置等,報表顯示為:
注意事項
主報表對子報表傳參,參數設置中參數的名稱一定要與子報表參數名稱保持一致