首頁>技術>

No.1

使用者登入許可權在程式設計設計中是一個很重要的專案,實際意義在於實現分級管理。

也就是區分不同使用者可以執行的某些操作。

根本上就是一個階級的建立過程。

雖然,任何事任何時候都要講究平等,但實際上,有些平等只是一個相對概念,並不能完全實現。

如果一律平等,將會造成混亂,沒有規則,就失去了管理的能力。

No.2

用一個表格來儲存使用者名稱,以及其對錶的操作許可權記錄。

具體效果可看下圖:

以上圖為初始化之後的表格記錄,"√"表示可以操作,"×"表示不允許操作。

設定許可權後效果如下圖:

No.3

當然,設定這個表,並不是我們想要達到的目的。

我們的目的是以此表為依據,對登入後的使用者進行一個判斷,然後確認是否可以進行下一步表格操作。

為了實現這個目的,我們做了一些程式碼來進行處理。

如下圖所示:

當選擇某一個工作表的時候,會自動彈出一個對話方塊,這裡只做了使用者名稱判斷,也就是說,輸入一個使用者名稱,程式會自動判斷此使用者名稱是否可以對此表進行操作功能。

如果沒有自動退出,如果有便開啟表,進入操作。

在這個階段,有很多處理表的方法,如對錶進行隱藏,對錶進行表保護,等等。

本例,只做了限制顯示的功能。

下面看一些程式碼:

No.4

檢測使用者的合法性函式:

Function CheckAdmin() As Boolean '檢測是否合法使用者    Dim S As Worksheet, cell As Range, Xcell As Range, ir As Integer    Set S = ThisWorkbook.Worksheets("set")    ir = S.UsedRange.Rows.Count    Set cell = S.Range("A2:A" & ir)    Dim adminName As String    adminName = VBA.InputBox("輸入管理使用者名稱:", "使用者合法性檢測", "admin")    If VBA.Len(adminName) = 0 Then S.Activate: Exit Function    '查詢是否是合法使用者    Set Xcell = cell.Find(what:=adminName, LookIn:=xlValues, lookat:=xlWhole)    If Not Xcell Is Nothing Then        MsgBox Xcell.Value & vbCr & " 是合法使用者,可以使用!", vbInformation, "提示"        CheckAdmin = True    Else        MsgBox adminName & vbCr & " 不是合法使用者,不能使用!", vbInformation, "提示"        S.Activate        CheckAdmin = False    End IfEnd Function

CheckAdmin()函式返回一個布林值,True為合法使用者,False為非法使用者。

所謂合法使用者就是指已經註冊的使用者,非法就是沒有進行註冊登記的使用者。

上面程式碼檢測了使用者是否存在,下面程式碼檢測使用者是否具有對錶操作的許可權,這個是整個許可權管理的核心,仔細看下其判斷邏輯。

檢測表是否可以操作函式:

Function CheckAdminSheets(ActiveSheetName As String, S As Worksheet, xcell As Range) As Boolean '檢測表是否可以操作    Dim Ccell As Range, Cr As Range, Ci As Integer    Ci = S.Cells(1, S.Cells.Columns.Count).End(xlToLeft).Column    Set Ccell = S.Range(S.Cells(1, 2), S.Cells(1, Ci))    Set Cr = Ccell.Find(what:=ActiveSheetName, LookIn:=xlValues, lookat:=xlWhole)    If Cr Is Nothing Then        CheckAdminSheets = False    ElseIf Not Cr Is Nothing Then        If S.Cells(xcell.Row, Cr.Column).Value = 0 Then            CheckAdminSheets = True        ElseIf S.Cells(xcell.Row, Cr.Column).Value = -1 Then            CheckAdminSheets = False        End If    End IfEnd Function

使用者許可權管理,基本思路就是這樣,希望這樣的功能對有需求的朋友,有所借鑑。

嚴格來說,這樣的使用者登入管理方式,並不嚴謹。

只作為一種實現思路來進行說明,實際應用中,可能會遇到更加複雜的問題。

不做深入研究了。

10
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 如何用byte陣列儲存 int 和 long 型高精度數值