反饋已提交

網絡繁忙

超連結時一個參數傳遞多個值

1. 概述

1.1 應用場景

超連結傳參時,如果一個參數有多個英文逗號隔開的值,怎麼實現點選之後子表可以將這些值相關的資料一起顯示出來呢?效果如下圖所示:

.


1.2 實現思路

主表正常設定超連結傳參,子表如果是資料集參數, SQL 語句要使用 in 來查詢傳入的多個值,子表如果是範本參數,要用 split() 公式設定過濾條件。

本文範例的子表是資料集參數,範本參數的設定會在本文 2.1 節簡單提及。

2. 範例

本文範例:主表超連結傳入的參數為10001,10002,點選超連結後,子表顯示訂單號為10001訂單號為10002的資料。

2.1 設計子表

1)開啟範例範本:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doctw\SpecialSubject\HyplinkReport\訂單明細表.cpt

或者點選此處直接下載範例範本:訂單明細表.cpt

2)修改 SQL 語句,利用 in 來查詢傳入的多個值,得出相應的資料。

注:建議使用方案二的 SQL 語句,統一為需要查詢的的參數加上引號,防止因資料型別不匹配而導致查詢失敗。

方案一:當傳入參數型別為整數型態時,在 in 列表中的值可不加引號,直接查詢。

SELECT * FROM 訂單明細 WHERE 訂單ID in (${訂單號})

方案二:當傳入參數型別為字串或日期時,在 in 列表中的值需要加上引號。
SELECT * FROM 訂單明細 
WHERE 1=1
${if(len(訂單號) == 0,"","and  訂單ID in ('"   SUBSTITUTE(訂單號,",","','")   "')")}

公式說明如下:

  • ('"   SUBSTITUTE(訂單號,",","','")   "')" 將傳入參數中的英文逗號更換為','字,即為傳入參數中的每個值單獨加上引號。範例傳入的參數值為10001,10002,最終更換為('10001','10002')

  • ${if(len(訂單號) == 0,"","and  訂單ID in ('"   SUBSTITUTE(訂單號,",","','")   "')")} 表示定義一個資料集參數 訂單號
    點選超連結,當傳入參數 訂單號 不為空時,連接上 and條件,即and  訂單ID in ('"   SUBSTITUTE(訂單號,",","','")   "')" ,使用傳入的訂單號進行查詢。

3)將該範本儲存到 %FR_HOME%\webapps\webroot\WEB-INF\reportlets\doctw\SpecialSubject\HyplinkReport\ 路徑下,重命名為:參數傳遞多值子表.cpt

注:這個範例的子表用的是資料集參數,如上設定即可,但是如果您用的是範本參數,需要按照下圖設定過濾條件:

這個過濾條件的運算子必須是「包含於」,公式為:=split($訂單號,",")


2.2 設計主表

1)建立普通報表,建立內建資料集 ds1 ,其中訂單ID欄位裏有 2 個英文逗號隔開的值,如下圖所示:


2)如下圖設計表格,將資料集欄位拖到對應儲存格中。


3)選中 A2 儲存格,設定網路報表型別的超連結,連結到上面的子表,設定參數訂單號,其值為公式=$$$,如下圖所示:


2.3 效果預覽

2.3.1 PC 端

儲存主表,分頁預覽後超連結效果如 1.1 節應用場景中所示。

2.3.2 行動端

App 與 HTML5 端效果相同,如下圖所示:


3. 範本下載

完成範本參見:

%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doctw\SpecialSubject\HyplinkReport\參數傳遞多值主表.cpt

%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doctw\SpecialSubject\HyplinkReport\參數傳遞多值子表.cpt

點選下載範本:

參數傳遞多值主表.cpt

參數傳遞多值子表.cpt


附件列表


主題: 報表專題
  • 有幫助
  • 沒幫助
  • 只是瀏覽
  • 圖片不清晰
  • 用語看不懂
  • 功能說明看不懂
  • 操作說明太簡單
  • 內容有錯誤
中文(繁體)

文 檔回 饋

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

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

不再提示

10s後關閉