當前為10.0版本文檔,更多實例內容將在最新幫助文檔中展現,點選跳轉至 最新版幫助文檔

數據集參數

1. 概述

1.1 在線視頻

在線視頻學習請查看:參數入門示例

1.2 應用場景

類似通信、監控行業,每天都有海量數據生成,數據庫表中總數據量非常大,而報表中往往只要獲取當天的幾百條數據就可以了。

如果使用模板參數,就需要先取出所有數據,再進行過濾,取數+過濾,将消耗大量時間,極大影響報表的查詢效率。而數據集參數在數據庫查詢時就已經完成了數據過濾,故在大數量場景下,使用數據集參數進行查詢報表的設計。

1.3 功能簡介

定義數據集時,通過在 SQL 語句中添加 ${para} 格式的内容,即可定義數據集參數,定義完成後,使用方法和模板參數一緻。如下圖所示,下拉框選擇「華東」,點擊查詢,只查詢出報表中華東地區的銷售信息。

1.png

2. 示例

2.1 定義數據集參數

在數據集 SQL 語句中,使用 ${para} 做爲一個參數宏,即通過${ } 的格式定義參數,其中變量 para 爲參數名,若字段值爲字符串可加上引号使用,如'${para}'。

注:定義了數據集參數,即從數據庫中查詢取數時,會根據參數值來查詢對應的數據,也就是說在數據準備時就完成了數據過濾。

如下,新建數據集 ds1,數據庫查詢對話框中寫入 SQL 查詢語句SELECT * FROM 銷量 WHERE 地區='${地區}',相當於在數據庫查詢語句中定義一個數據集參數「地區」。點擊右下角刷新按鈕,下方數據集參數管理面板會顯示已經新建好的數據集參數「地區」,設置它的默認值爲華東。點擊确定,即同時完成了數據準備和定義數據集參數的工作。

Snag_41d683d.png

2.2 表格樣式設計

1)如下圖所示設置表格樣式,其中給表格選擇預定義樣式Head類型的樣式,标題字體自動居中。

Snag_432649d.png

2)将數據集中的字段拖入到對應單元格中,字體居中,給表格整體添加預定義樣式默認的天藍色内外框。

Snag_437db0d.png

3)選中 C2 單元格,右邊屬性面板選擇單元格元素>基本。數據設置下拉框選擇彙總>求和

Snag_43a083e.png

2.3 參數添加控件

1)點擊參數面板的編輯按鈕,進入參數面板設置界面。

Snag_443fee7.png

2)右上角控件設置面板會顯示沒有添加控件的參數,點擊地區或者點擊全部添加,将參數的默認控件添加到參數面板。

注:參數與控件是通過參數名稱進行綁定的,也就是說當控件名稱與參數名稱一緻時,參數與控件就進行了綁定,即在 Web 端給控件賦值就相當於給參數賦值。

Snag_445e162.png

3)參數「地區」的默認控件添加到參數面板後,效果如下圖所示:

注:如果不想點擊「全部添加」或「參數」快捷添加默認控件,也可以直接從控件欄中将控件拖拽到參數面板中,修改控件的名稱與參數名稱一緻,即可将控件與參數進行綁定。

Snag_44a8177.png

4)點擊自定義控件的編輯按鈕,選擇下拉框控件類型,讓用戶通過下拉框選擇參數值。

Snag_44dfd50.png

5)要想報表預覽時點擊下拉框可以出現參數值的選項,則需要設置下拉框的數據字典爲銷量表下的地區字段。

參數面板選中下拉框控件,右邊屬性面板選擇屬性>數據字典,點擊數據字典編輯按鈕,彈出數據字典設置對話框。數據字典的類型設置爲數據庫表,數據庫爲FRDemo,選擇數據庫表爲銷量,列名實際值和顯示值都爲地區

注:控件綁定數據字典時,當數據集中有和控件同名的參數時,不要使用,否則将造成循環引用,使得模板出錯,如此處ds1 。

Snag_452c947.png

6)将查詢按鈕往左邊拖拽,形成緊湊式布局,讓控件面板更加美觀。再次點擊參數面板的編輯按鈕,完成參數控件的設置。

Snag_45b44ca.png

2.4 效果預覽

2.4.1 PC 端

保存報表,分頁預覽查看報表。

下拉框選擇「華東」,點擊查詢,只查詢出報表中華東地區的銷售信息。

1.png

下拉框選擇「華北」,點擊查詢,只查詢出報表中華北地區的銷售信息。

2.png

2.4.2 移動端

移動端查看報表的方式參見 報表移動端預覽

下拉框選擇「華東」,點擊查詢,只查詢出報表中華東地區的銷售信息。

1567583530409897.jpg

下拉框選擇「華北」,點擊查詢,只查詢出報表中華北地區的銷售信息。

1567583548937424.jpg

3. 已完成模板

已完成模板可參見:%FR_HOME%\webroot\WEB-INF\reportlets\demo\NewbieGuide\數據集參數.cpt

點擊下載模板:數據集參數.cpt

4. 數據集參數的應用

4.1 簡單應用

在新建數據集時,定義 SQL 查詢語句,直接使用 where 條件過濾出所需數據,從而大大縮短報表取數時間,如SQL 語句:

SELECT * FROM 銷量 where 地區 = '${地區}'

4.2 帶公式的應用

數據集 SQL 查詢語句中可以使用參數宏${}動态地生成過濾條件,${}執行結果與 SQL 語句拼接起來形成最終的查詢語句,傳遞給數據庫執行。${} 中可以使用 FineReport 所有内置的函數,如 if 函數,SQL 語句中也可以使用多個${}

${}中除了 FineReport 内置的函數名、常量外,其他變量就是數據集參數。

如下 SQL 語句:

SELECT * FROM 訂單 where 1=1 ${if(len(area) == 0,"","and 貨主地區 = '" + area + "'")} ${if(len(province) == 0,"","and 貨主省份 = '" + province + "'")}

if 函數是 FineReport 内置的公式,變量 area 是數據集參數,如果 len(area)!=0,即 area 參數不爲空,如 area 的值爲「華東」,那麽 if 語句的執行結果爲and 貨主地區='華東',将此句拼接到 SQL 語句中就變成:

SELECT * FROM 訂單 where 1=1 and 貨主地區='華東'

4.3 嵌套應用

定義數據集參數時,也可以嵌套使用。即通過一些邏輯判斷嵌套定義多個數據集參數。如下 SQL 語句:

SELECT  * FROM 銷量 where 1=1 ${if(len(area)!=0," and 地區='"+area+"'",if(len(product)=0,""," and 産品='"+product+"'"))}

if 函數是 FineReport 内置的公式,變量 area 和 product 是數據集參數,如果len(area)!=0,即 area 參數不爲空,即以

SELECT * FROM 訂單 where 1=1 and 貨主地區='area' 查詢,如地區爲空,則要判斷 len(product),若 product 參數爲空,則不拼接任何查詢條件,即查出所有,否則以SELECT * FROM 訂單 where 1=1 and 貨主地區='product' 查詢。

附件列表


主題: 原簡體文檔
已經是第一篇
已經是最後一篇
  • 有幫助
  • 沒幫助
  • 只是瀏覽

文 檔回 饋

滑鼠選中內容,快速回饋問題

滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。

不再提示

7s後關閉

反饋已提交

網絡繁忙