“深入學習FineReport后發現其功能及其強大,之前使用存儲過程實現的報表完全可以使用FineReport本身的功能實現。
當你需要的表名,查詢條件等均未知的時候,使用“動態參數注入”即可實現將一個查詢的結果集當成另一個查詢的條件,甚至表名來使用。
使用動態參數注入的時候同時要配合父子格的使用。”
一、父子格
父子格一般用於,單元格拓展,當不選擇父格的時候,查詢結果會沿選擇的拓展方向自動拓展,如果選擇了父格,查詢結果會跟隨父格一起拓展。如果選擇不拓展,查詢結果會以逗號分隔占一個單元格。
選擇父格的操作有兩種,一種雙擊單元格配置,一種選中單元格后在右側配置。
二、動態參數注入
選擇父格后就可以選擇動態參數注入,假如我的結果集需要一個動態的表名才能查出來,SQL如下
SELECT ORGAN_NAME FROM SYS_ORGAN ${if(len(TABLENAME)=0, "where id in ('')", 'WHERE ID IN (SELECT DEP_ID FROM '+TABLENAME+' GROUP BY DEP_ID)')}
這個時候我可以在單元格里動態注入TABLENAME,如下
這里的A25為單元格A25,放的是另一個結果集查到的表名,並且設置為父格,即可實現動態參數注入。
通過動態參數注入的方法可以解決很多問題,也不需要再用存儲過程這種比較麻煩的方法了。