場景
在項目中做查詢表單或者填報表時,經常會有動态關聯的業務需求,比如省市區的關聯,潤乾填報 / 參數表單報表不僅可以實作單個省市區的動态關聯,還可以實作多省市區的動态關聯。
下面我們就以潤乾報表示例資料庫現有的資料表—客戶表和訂單表 為例,來舉例介紹一下資料多選的動态關聯。
最終效果

- 繪制主表,這裡是一個簡單的網格表單 統計不同城市的客戶量以及銷售額。
單元格表達式如下圖
其中, 報表資料集及參數設定如下
- 制作參數表單,如下
多值關聯過濾
其中
資料集 SQL 如下
重點設定為 C2、E2、G2 單元格實作國家 省 市 的多選關聯過濾,具體設定如下:
C2 單元格:設定 web 變量名為 arg1,同時設定編輯風格為 下拉資料集 取值 ds2. 國家,如下
E2 單元格:設定 web 變量名為 province,同時設定編輯風格為 下拉資料集 取值 ds2. 省份,關聯過濾表達式:(‘,’+C2.toString()+‘,’).indexOf(‘,’+ 國家 +‘,’) >= 0,觸發關聯過濾單元格為 C2,如下
G2 單元格:設定 web 變量名為 city,同時設定編輯風格為 下拉資料集 取值 ds2. 城市,關聯過濾表達式:(‘,’+E2.toString()+‘,’).indexOf(‘,’+ 省份 +‘,’) >= 0,觸發關聯過濾單元格為 E2,如下
3.确認儲存,分别将主表和參數表單儲存為:dzglgl.rpx dzglgl_arg.rpx。
到這裡我們就完成了資料多選的動态關聯。
本文要點:
掌握關聯過濾表達式的用法,以 E2 的表達式為例解析如下:
E2 關聯過濾表達式:(‘,’+C2.toString()+‘,’).indexOf(‘,’+ 國家 +‘,’) >= 0
意為:從 E2 中檢索與 C2 所選國家相符的省份。
此關聯表達式靈活結合了 javascript 的 indexOf() 方法,方法說明: