2010年11月16日

Reporting Services權限控管應如何寫

在MS SQL 2005 Reporting Services中,想要讓不同使用者在看同一張報表的時候,可以看到不同的內容,應該要怎麼寫?
例如:A、B、C、D、E五個人,在各自登入Reporting看"銷售明細表"的時候,A只能看的到A自己的客戶,B、C、D登入時也只能看到自己的客戶資料,但E登入卻可以看到所有的資料.


實作上大致如下:

'1. 在BLL 那層製作一傳入sales變數的method,如下:

Public Class RptBLL
    Private _Adapter As RptTableAdapter = Nothing
    Protected ReadOnly Property Adapter() As RptTableAdapter 
        Get
            If _Adapter Is Nothing Then
                _Adapter = New RptTableAdapter()
            End If

            Return _Adapter
        End Get
    End Property
     _
    Public Function GetDataBySalesMan(ByVal salesMan As String) As myDS.rptDataTable
        Return Adapter.GetData(salesMan)
    End Function

End Class
'2. 在dataset, 建一名為"rpt"的data table, 並加入一個fill屬性的method, 參數是salesMan, 裏頭的sql如下:
select * from salesReport where salesMan = @salesMan

'3. 建立報表階段, 在建datatable時, 把salesMan傳到1所建的method, 像這樣:
Dim bll_rptAs RptBLL= New RptBLL()
dt_rpt = bll_rpt.GetData(salesMan)

'4. 至於是哪個業務員, 你可從login那邊得知


沒有留言:

張貼留言