反饋已提交

網絡繁忙

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

資料集參數

一、概述

1
應用場景。
  1. 類似通訊、監視行業,每天都有海量資料生成,資料庫表中總資料量非常大,而報表中往往只要獲取當天的幾百筆資料就可以了。

  2. 如果使用範本參數,就需要先取出所有資料,再進行過濾,取數+過濾,將消耗大量時間,極大影響報表的查詢效率。而資料集參數在資料庫查詢時就已經完成了資料過濾,所以使用資料集參數設計的查詢報表會比使用範本參數的效率高。

2
功能簡介。
  1. 定義資料集時,透過在 SQL 語句中新增【${para}】格式的內容,即可定義資料集參數,定義完成後,使用方法和範本參數一緻。如下圖所示,下拉框選擇【華東】,點選查詢,只查詢出報表中華東地區的銷售資訊。

二、使用說明

  1. 資料集 SQL 查詢語句中可以使用參數巨集 【${}】動態地生成過濾條件,【${} 】執行結果與 SQL 語句連接起來形成最終的查詢語句,傳遞給資料庫執行。SQL 語句中可以使用多個 【${}】,定義多個參數使用。

  2. 使用【${} 】定義參數時,{ }內寫入的內容即為定義參數的內容,其中可以使用 FineReport 所有內建函式,如 if 函式、len 函式等。{ }中除了 FineReport 內建函式名、常數、字串連接文法外,其他變數就是資料集參數。

  3. 如:【SELECT * FROM 銷量 where 地區 = '${area}' 】中定義的資料集參數為 area。

  4. 帶有資料集參數的 SQL 語句寫好後,點選資料集定義介面【預覽】按鈕時,若顯示出定義的資料集參數。則表明資料集參數定義成功。如下圖所示。

  5. 在參數位置輸入值後點選確定,參數值就會代入 SQL 語句中,查詢出資料。

  6. 如下給出幾種常見的應用方式,使用者在使用時按實際場景調整即可。注意,因為資料集參數用在 SQL 查詢語句中,所以在使用時,特別要注意文法和對應資料庫型別的 SQL 文法匹配。

注:定義資料集參數時,盡量不要在${}中直接使用{ 、},可能會無法決議。若必須在${}中直接使用{ 、},需要使用函數 CONCATENATE 轉義,例如:SELECT * FROM 銷量${'{'}語句會出現報錯,需要將語句改為 SELECT * FROM ${CONCATENATE("銷量{")},即可正常查詢。 

1
簡單應用。
  1. 如要定義一個地區參數,透過此參數過濾資料。建立資料集時,就可以在 SQL 查詢語句中定義一個資料集參數 area:【SELECT * FROM 銷量 where 地區 = '${area}'】。

  2. SQL 語句中,其他內容都是確定的,唯有 area 不確定,當 area 對應不同值時,資料集也將查詢出不同地區的資料。

  3. 如果要實現多選查詢,就可以結合 SQL 語句 in 的用法定義一個參數,如:【SELECT * FROM 銷量 where 地區 in ('${area}')】

  4. 輸入參數值時注意要和資料庫文法一緻,如查詢華東華北的資料 SQL 文法為 【SELECT * FROM 銷量 where 地區 in ('華東','華北')】,輸入參數值形式應該為 【華東','華北】,這樣加上定義時的 ('${area}') 就會連接成正確的文法。

2
帶公式的應用。
  1. 定義資料集參數時,可以使用 FineReport 所有內建函式。如需要定義一個地區參數,當地區為空時,查詢所有地區的資料;當地區值不為空時,查詢對應地區的資料:

  2. 【SELECT * FROM 訂單 where 1=1 ${if(len(area) == 0,"","and 貨主地區 = '" + area + "'")} 】

  3. 定義時,先使用函式 len 獲取參數的長度,然後使用 if 函式進行判斷

  4. 如果 area 參數的長度為 0,則內容為空,SQL 連接後為 【SELECT * FROM 訂單 where 1=1】;

  5. 如果 area 參數的長度不為 0,則將字串 【and 貨主地區 = '】、【參數area】、'連接成一句 SQL ,如【area】的值為華東,那麼參數定義部分的執行結果為【and 貨主地區='華東'】,完整的 SQL 語句就變成:【SELECT * FROM 訂單 where 1=1 and 貨主地區='華東'】。

3
定義多個參數。
  1. 如果在資料過濾中,需要多個過濾條件,則可以定義多個資料集參數,如:

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

  3. 其中使用了兩次 ${},定義了兩個資料集參數 area 和 province,定義過程解譯可參考第二章第2節。

4
嵌套應用。
  1. 定義資料集參數時,也可以透過一些邏輯判斷巢定義多個資料集參數。如:

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

  3. if 函式是 FineReport 內建公式,變數 area 和 product 是資料集參數,如果【len(area)!=0】,即 area 參數不為空,即以

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


三、範例

1
定義資料集參數。
  1. 建立資料集 ds1,資料庫查詢對話框中寫入 SQL 查詢語句 【SELECT * FROM 銷量 WHERE 地區='${area}'】,相當於在資料庫查詢語句中定義一個資料集參數【area】。點選右下角【重新整理】按鈕,下方資料集參數管理面板會顯示已經建立好的資料集參數【area】,設定它的預設值為【華東】。點選【確定】,即同時完成了資料準備和定義資料集參數的工作。如下圖所示。

2
表格樣式設計。
  1. 設定表格樣式,其中給表格選擇預定義樣式 【Head】型別的樣式,標題字體自動置中。如下圖1所示;

  2. 將資料集中的欄位拖入到對應儲存格中,字體置中,給表格整體新增預定義樣式預設天藍色內外框。如下圖2所示;

  3. 選中 C2 儲存格,右邊屬性面板選擇【儲存格元素】→【基本】。資料設定下拉框選擇【彙總】→【求和】。如下圖3所示。

3
參數新增元件。
  1. 點選參數面板的【編輯】按鈕,進入參數面板設定介面。如下圖1所示;

  2. 右上角元件設定面板會顯示沒有新增元件的參數,點選 【area 】或者點選【全部新增】,將參數的預設元件新增到參數面板。

  3. 點選自訂元件的【編輯】按鈕,選擇下拉框元件型別,讓使用者透過下拉框選擇參數值。如下圖2所示;

  4. 要想報表預覽時點選【下拉框】可以出現參數值的選項,則需要設定下拉框的資料字典為銷量表下的地區欄位。參數面板選中【下拉框元件】,右邊屬性面板選擇【屬性】→【資料字典】,點選資料字典【編輯】按鈕,彈出資料字典設定對話框。資料字典的型別設定為【資料庫表】,資料庫為 【FRDemoTW 】,選擇資料庫表為【銷量】,欄名實際值和顯示值都為【地區】。如下圖3所示;

  5. 點選【標簽元件】,將元件值命名為【地區:】。如下圖4所示;

  6. 將查詢按鈕往左邊拖拽,形成緊湊式佈局,讓元件面板更加美觀。再次點選參數面板的【編輯】按鈕,完成參數元件的設定。如下圖5所示。

注1:參數與元件是透過參數名稱進行綁定的,也就是說當元件名稱與參數名稱一緻時,參數與元件就進行了綁定,即在 Web 端給元件指派就相當於給參數指派。

注2:如果不想點選【全部新增】或【參數】快捷新增預設元件,也可以直接從元件欄中將元件拖拽到參數面板中,修改元件的名稱與參數名稱一緻,即可將元件與參數進行綁定。

注3:元件綁定資料字典時,當資料集中有和元件同名的參數時,不要使用,否則將造成循環引用,使得範本出錯,如此處 ds1 。

4
效果預覽。
  1. PC 端:儲存報表,點選【分頁預覽】查看報表。下拉框選擇【華東】,點選查詢,只查詢出報表中華東地區的銷售資訊。下拉框選擇【華北】,點選查詢,只查詢出報表中華北地區的銷售資訊。

  2. 行動端:行動端查看報表的方式參見 報表行動端預覽。下拉框選擇【華東】,點選查詢,只查詢出報表中華東地區的銷售資訊。下拉框選擇【華北】,點選查詢,只查詢出報表中華北地區的銷售資訊。

四、已完成範本

  1. 已完成範本可參見:【%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doctw\Primary\Parameter\資料集參數.cpt】

  2. 點選下載範本:資料集參數.cpt


附件列表


主題: 11.0 新增文档
已經是第一篇
已經是最後一篇
  • 有幫助
  • 沒幫助
  • 只是瀏覽
  • 圖片不清晰
  • 用語看不懂
  • 功能說明看不懂
  • 操作說明太簡單
  • 內容有錯誤

文 檔回 饋

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

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

不再提示

10s後關閉