隨筆 - 225  文章 - 98  trackbacks - 0
          <2011年11月>
          303112345
          6789101112
          13141516171819
          20212223242526
          27282930123
          45678910

          隨筆分類

          相冊(cè)

          報(bào)表工具廠商們

          搜索

          •  

          最新評(píng)論

          閱讀排行榜

          問題:實(shí)際應(yīng)用環(huán)境中,不同角色的人可能對(duì)數(shù)據(jù)具有不同的訪問權(quán)限,通過直接在SQL語句中篩選出需要的數(shù)據(jù)制作模板可以解決該需求,但對(duì)于角色較多的情況,就需要制作很多張樣式相同只是數(shù)據(jù)集不同的報(bào)表,不利于后期的維護(hù)并且加大了報(bào)表制作的工作量。

          方案:針對(duì)該問題,在Java報(bào)表FineReport中,可以利用SQL參數(shù)配合參數(shù)處理器再結(jié)合權(quán)限以完成該需求。使用該方案只需要制作一張表樣,利用SQL中的參數(shù)進(jìn)行動(dòng)態(tài)過濾達(dá)到該目的。下面具體描述該方案的實(shí)施過程。

           

          第一步:數(shù)據(jù)準(zhǔn)備

              這里使用的是DEMO數(shù)據(jù),主要為了演示該方案的操作,具體使用的時(shí)候需要根據(jù)具體的數(shù)據(jù)情況進(jìn)行調(diào)整:

          表:datas

          ID

          DATA

          ROLE

          1

          100

          0

          2

          200

          0

          3

          300

          0

          4

          400

          1

          5

          500

          1

          6

          600

          2

          7

          700

          2

          8

          800

          3

           

          ID:編號(hào)

          DATA:數(shù)據(jù)

          ROLE:可查看角色編碼

           

          表:roles

          ID

          ROLENANME

          ROLE

          1

          總裁

          0

          2

          總經(jīng)理

          1

          3

          部門經(jīng)理

          2

          4

          銷售人員

          3

          ID:編號(hào)

          ROLENAME:角色名稱

          ROLE:角色編碼

           

          第二步:制作模板

          2.1 新建一張模板,報(bào)表數(shù)據(jù)集中新建一個(gè)“數(shù)據(jù)庫查詢數(shù)據(jù)集”,名稱為:datasSQL語句寫成“select * from datas where ROLE>=[?ROLE?]

          2.2 拖拽新建的報(bào)表數(shù)據(jù)集datas的數(shù)據(jù)列至報(bào)表中,如下圖所示:

          http://www.finereport.com/forumimages/tgqxkzsjfw1.jpg

          2.3 新建一個(gè)服務(wù)器數(shù)據(jù)字典,用于進(jìn)行角色名稱與角色編碼的轉(zhuǎn)換,因?yàn)檫@里是演示用,就直接將數(shù)據(jù)寫死了,使用自定義的服務(wù)器數(shù)據(jù)字典,用戶可以根據(jù)具體的情況使用數(shù)據(jù)庫查詢數(shù)據(jù)字典來定義,關(guān)鍵點(diǎn)是要將“角色名”設(shè)置為key,“角色編碼”設(shè)置為value。因?yàn)樵趹?yīng)用的過程中,一個(gè)用戶的角色是通過角色名來定義的,而對(duì)數(shù)據(jù)的訪問控制是通過角色編碼來控制的,這里需要一個(gè)值轉(zhuǎn)換的過程。如果角色名與角色編碼一致則可以不經(jīng)過下列步驟的設(shè)置。

          數(shù)據(jù)字典的名稱為:roles_map

          http://www.finereport.com/forumimages/tgqxkzsjfw2.jpg

          2.4 設(shè)置參數(shù)處理器,選擇菜單中的“報(bào)表-“參數(shù)處理器”,定義先前SQL語句中定義的參數(shù)“ROLE”的參數(shù)處理器,這里采用公式類型,用于將角色名處理為角色編碼,公式為:“MAP($ROLE,”roles_map”)”如下圖所示:

          http://www.finereport.com/forumimages/tgqxkzsjfw3.jpg

          2.5 保存模板文件即可。

          2.6 用戶在集成應(yīng)用的時(shí)候,需要在系統(tǒng)登錄后設(shè)置當(dāng)前登錄的用戶的角色,或者使用FineReport自帶的權(quán)限管理系統(tǒng)。如果采用FineReport自帶的權(quán)限管理系統(tǒng),上述SQL語句中的ROLE參數(shù)可使用FR_ROLE_NAME來替代,該參數(shù)是FineReport權(quán)限系統(tǒng)中的默認(rèn)登錄角色參數(shù)名。具體登錄角色設(shè)置方式請(qǐng)參見FineReport權(quán)限集成幫助文檔或咨詢FineReport服務(wù)人員。
          文章轉(zhuǎn)自:http://blog.vsharing.com/fanfanzheng/A1448107.html



          了解Java報(bào)表工具就從這里開始
          posted on 2011-11-21 10:49 season 閱讀(278) 評(píng)論(0)  編輯  收藏 所屬分類: Java報(bào)表—技術(shù)知識(shí)
          主站蜘蛛池模板: 江永县| 临澧县| 永靖县| 麻城市| 修文县| 含山县| 西乌珠穆沁旗| 弥渡县| 海安县| 清徐县| 改则县| 运城市| 黄石市| 青海省| 远安县| 墨脱县| 江华| 图们市| 浪卡子县| 虞城县| 哈密市| 枣庄市| 伊川县| 南召县| 濮阳市| 辽阳县| 和平区| 育儿| 尚义县| 西充县| 龙口市| 威海市| 平乡县| 昭通市| 福清市| 榕江县| 灵璧县| 博乐市| 甘孜| 紫阳县| 顺昌县|