1.FineReport 報表參數分為兩種:模板參數和數據集參數。
1.模板參數:是指在當前模板下創建的參數,且必須與過濾條件結合篩選數據。
1)全局參數:當前工程下的所有模板都可以使用。
2)模板參數:只有當前模板才可以使用。
2.數據集參數:新建數據集時,在 SQL 查詢語句中定義數據集參數,直接在數據查詢時就完成數據的過濾操作。
1)服務器數據集參數:當前工程下的所有報表都可以使用。
2)模板數據集參數:只有當前報表才可以使用。
2. 模板參數示例
2.1 示例效果
文本框中輸入「華東」,點擊查詢,只查詢出報表中華東地區的銷售信息。
文本框中輸入「華北」,點擊查詢,只查詢出報表中華北地區的銷售信息。
2.2 數據准備
新建數據集 ds1,數據庫查詢對話框中寫入 SQL 查詢語句SELECT * FROM 銷量,取出銷量表中的所有數據。
2.3 表格樣式設計
1)A1~C1 單元格寫入表格標題信息,選中 A1~C1 單元格,右邊屬性面板選擇單元格屬性>樣式,樣式下拉框選擇預定義樣式,給標題設置一個Head類型的樣式。
注:設置好 Head 類型的樣式后,標題字體會自動居中,無需另外設置。
2)將數據集中的字段拖入到對應單元格中,選中 A2~C2 單元格,將字體居中,選中 A1~C2 單元格,給表格整體添加預定義樣式默認的天藍色內外框。
3)選中 C2 單元格,右邊屬性面板選擇單元格元素>基本。數據設置下拉框選擇匯總>求和。
2.4 定義模板參數
1)菜單欄選擇模板>模板參數,打開模板參數設置對話框。
2)模板參數對話框點擊增加按鈕,新建一個模板參數,雙擊該參數將它重命名為「地區」,設置默認值為「華東」。點擊確定完成模板參數的定義。
如果想要修改模板參數名稱,只能通過雙擊原名稱進入編輯狀態后進行修改,修改完后點擊確定即可,如下圖所示:
2.5 參數添加控件
1)點擊參數面板的編輯按鈕,進入參數面板設置界面。
2)右上角控件設置面板會顯示沒有添加控件的參數,點擊地區或者點擊全部添加,將參數的默認控件添加到參數面板。
注:參數與控件是通過參數名稱進行綁定的,也就是說當控件名稱與參數名稱一致時,參數與控件就進行了綁定,即在 Web 端給控件賦值就相當於給參數賦值。
3)參數「地區」的默認控件添加到參數面板后,效果如下圖所示:
注:如果不想點擊「全部添加」或「參數」快捷添加默認控件,也可以直接從控件欄中將控件拖拽到參數面板中,修改控件的名稱與參數名稱一致,即可將控件與參數進行綁定。
4)點擊自定義控件的編輯按鈕,選擇文本框控件類型,讓用戶自行輸入參數值。
5)將查詢按鈕往左邊拖拽,形成緊湊式布局,讓控件面板更加美觀。再次點擊參數面板的編輯按鈕,完成參數控件的設置。
2.6 數據過濾
設置好控件后還不能實現根據文本框中輸入的參數值查詢指定地區的銷售信息。因為數據集中的數據是將數據庫中的數據全部取出來,表格的數據來源於數據集,所以需要給表格設置數據過濾條件,當用戶在文本框中輸入地區參數值點擊查詢時,表格只顯示該地區的銷售信息。
雙擊 A2 單元格,在彈出的數據列對話框中選擇過濾,添加一個普通條件,讓數據列地區等於參數$地區,點擊增加按鈕,點擊確定。即將地區單元格與參數綁定起來。
3.數據集參數示例
3.1 定義數據集參數
新建數據集 ds1,數據庫查詢對話框中寫入 SQL 查詢語句SELECT * FROM 銷量 WHERE 地區='${地區}',在數據庫查詢語句中定義一個數據集參數「地區」。點擊右下角刷新按鈕,下方數據集參數管理面板會顯示已經新建好的數據集參數「地區」,設置它的默認值為華東。點擊確定,即同時完成了數據准備和定義數據集參數的工作。
注1:從數據庫中查詢取數時,會根據參數值來查詢該參數值對應的數據,也就是說在數據准備這一步就已經完成了數據過濾。
注2:在數據集 SQL 語句中,使用 ${para} 做為一個參數宏,其中變量para為參數名,若字段值為字符串則加上引號如'${para}'。
3.2 表格樣式設計
1)A1~C1 單元格寫入表格標題信息,選中 A1~C1 單元格,右邊屬性面板選擇單元格屬性>樣式,樣式下拉框選擇預定義樣式,給標題設置一個Head類型的樣式。
注:設置好 Head 類型的樣式后,標題字體會自動居中,無需另外設置。
2)將數據集中的字段拖入到對應單元格中,選中 A2~C2 單元格,將字體居中,選中 A1~C2 單元格,給表格整體添加預定義樣式默認的天藍色內外框。
3)選中 C2 單元格,右邊屬性面板選擇單元格元素>基本。數據設置下拉框選擇匯總>求和。
3.3 參數添加控件
1)點擊參數面板的編輯按鈕,進入參數面板設置界面。
2)右上角控件設置面板會顯示沒有添加控件的參數,點擊地區或者點擊全部添加,將參數的默認控件添加到參數面板。
注:參數與控件是通過參數名稱進行綁定的,也就是說當控件名稱與參數名稱一致時,參數與控件就進行了綁定,即在 Web 端給控件賦值就相當於給參數賦值。
3)參數「地區」的默認控件添加到參數面板后,效果如下圖所示:
注:如果不想點擊「全部添加」或「參數」快捷添加默認控件,也可以直接從控件欄中將控件拖拽到參數面板中,修改控件的名稱與參數名稱一致,即可將控件與參數進行綁定。
4)點擊自定義控件的編輯按鈕,選擇下拉框控件類型,讓用戶通過下拉框選擇參數值。
5)要想報表預覽時點擊下拉框可以出現參數值的選項,則需要設置下拉框的數據字典為銷量表下的地區字段。
參數面板選中下拉框控件,右邊屬性面板選擇屬性>數據字典,點擊數據字典編輯按鈕,彈出數據字典設置對話框。數據字典的類型設置為數據庫表,數據庫為FRDemo,選擇數據庫表為銷量,列名實際值和顯示值都為地區。
注:使用數據集參數時,控件的數據字典不可使用報表的數據集(此處即為 ds1 ),否則將造成循環引用,使得模板出錯。
6)將查詢按鈕往左邊拖拽,形成緊湊式布局,讓控件面板更加美觀。再次點擊參數面板的編輯按鈕,完成參數控件的設置。
3.4 帶公式的應用
數據集 SQL 查詢語句中可以使用參數宏${}動態地生成過濾條件,${}中的語句在 FineReport 報表中執行,將${}的執行結果與 SQL 語句拼接起來形成最終的查詢語句,傳遞給數據庫執行,可以使用多個${},如下 SQL 查詢語句:
SELECT * FROM 訂單 where 1=1 ${if(len(area) == 0,"","and 貨主地區 = '" + area + "'")} ${if(len(province) == 0,"","and 貨主省份 = '" + province + "'")}
${}中可以使用 FineReport 所有內置的公式,如 if 函數;
${}中除了 FineReport 內置的函數名、常量外,其他變量就是數據集參數。
如上 SQL 語句,if 函數是 FineReport 內置的公式,變量 area 就是數據集參數,如果len(area)!=0,即 area 參數不為空,比如說 area 的值為「華東」,那么 if 語句的執行結果為and 貨主地區='華東',然后再把這句話拼接到 SQL 語句當中,SQL 語句就變成:
SELECT * FROM 訂單 where 1=1 and 貨主地區='華東'
摘自:
參數的種類與區別 https://help.fanruan.com/finereport/doc-view-156.html
模板參數 https://help.fanruan.com/finereport/doc-view-157.html
數據集參數 https://help.fanruan.com/finereport/index.php?doc-view-158.html