表單的自動查詢相較於參數應用的自動查詢,其實現方式更加簡單明瞭,無需更多的操作,只需要通過控件綁定即可輕輕鬆鬆實現該效果。
下面,我們通過web報表平臺FineReport來介紹表單自動查詢的實現方式。
工具/原料
web報表平臺FineReport7.1.1
大小:148.2M 適用平臺:windows/linux
方法/步驟
新建表單
新建一張表單,往表單中拖曳三個標籤控件、三個下拉框控件和一個報表塊組件,如下圖:
數據配置
在右側的數據集面板中新建三個數據集:
訂單:select 客戶.地區,客戶.城市,客戶.City,客戶.客戶ID,客戶.公司名稱,訂單.訂單ID,訂單.訂購日期,訂單.發貨日期,訂單.到貨日期,訂單.運貨商,貨主名稱,訂單明細.產品ID,(訂單明細.單價*訂單明細.數量) AS 金額 from 客戶,S訂單 訂單 ,S訂單明細 訂單明細 where 訂單.訂單ID=訂單明細.訂單ID and 客戶.客戶ID=訂單.客戶ID
ds1:select 城市, 城市 + ' ' + city as 城市city from 客戶 where 地區='${地區}'
ds2:SELECT 公司名稱 FROM 客戶 where 城市='${城市}' and 地區='${地區}'
並修改地區標籤後面的下拉框控件名稱為地區,城市標籤後面下拉框控件名稱為城市,客戶標籤後面下拉框控件名稱為客戶,其中三個下拉框數據字典配置如下表:
注:必須保證下拉框控件名稱與參數名稱保持一致。
報表塊數據列添加
點擊報表塊上面的編輯按鈕,進入報表塊編輯界面,如下圖所示,為每個單元格綁定數據列:
注:單元格樣式可以根據要求自己設置。
數據過濾
由於報表塊中的數據與下拉框數據字典綁定的數據並不是來源於同一個數據集,那麼他們不會天然形成過濾關係,需要手動為單元格添加過濾條件,選中訂單ID所在的A5單元格,雙擊,打開過濾界面,添加如下圖所示過濾條件:
注:公式if($地區 = "", nofilter, $地區)的意思是如果地區參數(這裡指控件名稱為地區的下拉框)的值為空,那麼就不過濾(nofilter是不過濾的意思),不為空,則顯示出相應地區的數據。
另:如果報表塊中的數據和控件數據字典綁定的數據來源於同一個數據集,則無需再次進行過濾。
樣式修改
此時保存模板,點擊預覽,可以看到雖然實現了效果,但是由於表單的自適應特性,控件置頂顯示,排列不美觀,此時,可以設置表單框架的內邊距,上邊距設置大點,如下圖:
右側的客戶下拉框控件直接靠右邊顯示,和其他的2個下拉框控件不協調,那麼我們是否也可以設置右邊距使其不靠右顯示呢?不可以的,body的內邊距設置時針對整個表單的,會作用於該表單的所有組件,但是可以往表單右側添加一個空白標籤控件,如下圖:
效果查看
保存模板,點擊預覽,可以看到如下圖所示效果。