反饋已提交
網絡繁忙
在實際應用會出現多資料集關聯報表,報表的展現速度會很慢,使用 SQL 語句關聯多個資料表又十分複雜。FineReport 提供【動態參數注入】功能,可加快報表的展現速度,又不用編寫複雜的 SQL 語句。
動態參數注入,是通過注入的值對資料庫中的資料進行操作的,只取對應的資料,從而提高報表的效能。本文將簡單對比【資料欄過濾】,【複雜 SQL】 和【動態參數注入】三種方法的展現效率。
注:動態參數注入只適用於【小資料量】的模板加快速度使用。大資料量的模板反而會降低載入速度。
例如 4 萬筆資料注入到兩個資料集裡面,實際上會依次載入 8 萬筆資料,反而會變慢。
建立報表:建立兩個資料集,ds1:【SELECT * FROM 訂單】;ds2:【SELECT * FROM 訂單明細】報表樣式如下圖1所示。
設定過濾條件:選擇 D2 儲存格,對 D2 儲存格設定過濾條件,可選欄為【訂單 ID】,操作符為【等於】,對應儲存格為【A2】。如下圖2所示。
修改 SQL 語句:將上述範本中,資料集 ds2 的 SQL 語句,修改成:【SELECT * FROM 訂單明細 where 訂單ID =${orderid}】。將參數【orderid】預設值設定為訂單 ID 中的一個值,如:【10248】。如下圖1所示。
參數注入設定:雙擊原進行過濾的 D2 儲存格,在彈出資料欄對話框中,點選【動態參數注入】按鈕,彈出【動態參數注入對話框】。插入參數【orderid】,設定值為 【A2】儲存格,同時刪除過濾條件。如下圖2所示。
建立資料集,SQL 語句為: 【select a.訂單ID,訂購日期,到貨日期,發貨日期,產品ID,單價,數量,進價,折扣 from 訂單 a,訂單明細 b where a.訂單ID=b.訂單ID】。
報表樣式參考本文第二章第1節。
分頁預覽本文第二章第1節製作的報表,從日誌中可看出,是將第二個資料集中的資料全部取出了,如下圖所示。
注:若將資料全部取出會降低報表的效能,因此會降低報表的展現速度。
若將兩個資料集定義成一個資料集,則 SQL 語句非常複雜,容易寫錯且難排查問題。
分頁預覽本文第二章第2節製作的報表,日誌中可看出每執行一欄就只是取出的對應訂單 ID 的那筆資料,如下圖所示。
滑鼠選中內容,快速回饋問題
滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。
不再提示
10s後關閉
反馈已提交
网络繁忙