報表工具中動態參數的靈活運用

報表開發過程當中,有的時候咱們會以爲普通參數很難知足一些業務需求,好比第二個數據集要引用第一個數據集的結果進行計算,動態控制 SQL 的過濾條件,動態列等,若是您遇到了這種狀況,能夠嘗試使用動態參數即 ${參數名} 的方式來達到咱們想要的效果。sql

那麼,什麼是動態參數呢?函數

動態參數通常是依賴於普通參數的具備計算能力的參數,在報表中動態參數咱們能夠看作是一個佔位符,在報表運算以前,系統會全面搜索整張報表定義,將全部 ${參數名} 中的參數名替換成參數值即 動態參數表達式的結果。.net

下面咱們舉幾個例子,看一下設計

  1. 首次展示參數值爲空,查詢所有數據

實現方法:blog

a. 將數據集中原有的 where 子句部分,用動態參數替換 以下圖排序

更改前 SQL:ip

SELECT 訂單. 訂單 ID, 訂單. 客戶 ID, 訂單. 訂購日期, 訂單. 貨主地區, 訂單. 運貨商, 訂單. 運貨費開發

FROM 訂單get

where 訂單. 訂單 ID >=10254string

更改後 SQL:

1png

b. 菜單欄中 選擇【報表】à 【參數】,新增動態參數,

表達式爲:if(bid==null,"",「where 訂單. 訂單 ID >=」+@bid)

意爲:根據參數模板 bid 的參數值是否爲空,肯定 sql 部分被替換的內容,以下圖

2png

注:bid 爲參數模板傳遞的參數名稱

c. 其餘,設置按照報表常規操做進行開發設計。

2. 第二個數據集要根據引用第一個數據集的結果進行計算

實現方法:

a. 新增動態參數,表達式爲第一個數據集的 sql 語句,以下圖

3png

參數表達式:

if(@bid==null || @bid=="" ,

「where 訂單 ID in (」+string(split(query(「select 訂單 ID from 訂單 where 貨主地區 =?」,「華中」;「demo」),「,」))+「)」,

「where 訂單 ID in (」+string(split(@bid,「,」))+「)」)

意爲:若是參數 bid 爲空,則根據某個 sql 語句的執行結果進行查詢,不然根據 bid 參數值進行數據過濾

b. 數據集部分設置以下:

4png

c. 其餘,設置按照報表常規操做進行開發設計。

3. 動態控制 SQL 的過濾條件

數據集 SQL 中包含多個過濾條件,假設當訂單 ID 及貨主地區參數值爲空時,SQL 語句中去掉這兩個查詢條件,同時假如其中一個有值則對應字段過濾生效,不然兩個參數都有值時,則訂單 ID 及貨主地區過濾均生效。

注:參數 arg1 對應訂單 ID、參數 arg2 對應貨主地區

實現方法:

a. 新增動態參數,利用 if() 函數實現上述邏輯判斷,以下圖

5png

參數表達式爲:

if(arg1=="" || arg1==null,

if(arg2=="" || arg2==null,「1=1」,「貨主地區 =’」+arg2+「’」),

if(arg2=="" || arg2==null,「訂單 ID=」+arg1,「訂單 ID=」+arg1 +「and 貨主地區 =’」+arg2+「’」)

)

b. 數據集部分設置以下:

6png

c. 其餘,設置按照報表常規操做進行開發設計。

等等。

點擊下載動態參數的靈活運用報表實例

更多相關文章可參考如下文章

動態列報表的製做
(http://c.raqsoft.com.cn/article/1533088998061)

多值模糊查詢報表的製做
(http://c.raqsoft.com.cn/article/1533026065516)

點擊表頭切換升降序排序方式
(http://c.raqsoft.com.cn/article/1534921694420)

相關文章
相關標籤/搜索