報表如何透過引數控制資料許可權

bubblegum發表於2020-07-30

報表開發過程中,常常會遇到需要對報表進行資料許可權控制的情況。

不同的機構、角色或具體到人,訪問同一張報表時所看到的資料是不同的。比如,工資條(也是一張簡單的報表),因為絕大多數公司薪資都是保密的,所以很顯然,系統內不同人看到的結果是不能相同的。 再比如,區域銷售情況統計,各區域銷售經理也只能看到所在區域的資料等等。

實際應用環境中,解決此類問題一般是透過直接在 SQL 中篩選出資料繪製報表模板,然後按照登入物件訪問指定的模板就可以了。但是,如果使用使用者的人員眾多,就需要製作 N 多張樣式相同只是 SQL(報表資料集)略有不同的報表,工作量大且不利於後期維護。

此時,我們就可以透過報表工具的引數動態接收系統傳來的人員賬號等資訊引數,進而動態顯示報表中的資料,以達到資料許可權控制的目的。

下面舉例看一下報表透過引數如何實現資料許可權控制。

例 1. 人事管理系統之工資條類報表資料許可權控制

特點:每個人或者使用者登入後,僅可以檢視本人的資料資訊,此類資料表一般都與資料庫使用者表直接或間接關聯,顧 SQL 可直接使用使用者編號對資料做精準獲取。

前提

  1. 報表資料來自資料表 payroll 中;

  2. 使用者 ID(uID)已從系統 session 中獲取,儲存在變數 userID 中(獲取具體設定可參考 )

報表重點設定

a. 資料集語句設定

1png

2png

b. 報表引數設定

3png

總結:

這類資料許可權控制基本是針對單條記錄操作的,顧 SQL 語句部分 不需要做太多其它設定,如有其它過濾條件按照正常引數設定新增即可。

例 2. 人員等級類資料許可權控制

特點:人員等級越高看到的資料越多。

前提:

1. 報表呈現所需資料儲存在資料表 m_datas 中;

2. 角色編號(role)已從系統 session 中獲取,儲存在變數 role 中(獲取具體設定可參考 )

報表重點設定:

a. 資料集語句設定

4png

注:${pri} 是動態引數 ${引數名} 的用法,可以看做一個佔位符,運算時會用其計算結果替換

b. 引數設定

5png

其中:

role 為普通引數 用於接收系統當前登入使用者角色

pri 為動態引數 根據 role 動態生成 sql 過濾條件

更多詳細設定可以參考

動態引數更多相關應用可參考

對進一步報表和 BI 技術感興趣的同學還可以搜尋“乾學院”,上面有整套的免費“商業智慧”技術課程,. 或者直接點下面的連結也可以 :


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69957599/viewspace-2708106/,如需轉載,請註明出處,否則將追究法律責任。

相關文章