Access权限 判断函数(2)

510次阅读
没有评论

共计 1727 个字符,预计需要花费 5 分钟才能阅读完成。

根据网上和书本的教程,结合自己的实际自定义了适合自己系统的权限判断函数,具体如下:

  1. Function OpenForm(FormID As Integer)
  2. On Error GoTo Err_OpenForm
  3. Dim i As Integer
  4. Dim STemp As String
  5. Dim Rs1 As ADODB.Recordset
  6. Dim Rs2 As ADODB.Recordset
  7. Set Rs1 = New ADODB.Recordset
  8. Set Rs2 = New ADODB.Recordset
  9. Dim blnOpen As Boolean
  10. Dim FormName As String
  11. Dim UserGroup As String
  12. Dim UserID As String
  13. UserGroup = DLookup(" 用户组 "" 系统用户表 "" 用户名 ='" & User & "'")
  14. UserID = DLookup("用户组 ID""用户组表""用户组 ='" & UserGroup & "'")
  15. ' 打开“用户组权限表”数据表
  16. STemp = "Select * From 用户组权限表 "
  17. Rs1.Open STemp, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
  18. ' 打开“系统窗体表”数据表
  19. STemp = "Select * From 系统窗体表 "
  20. Rs2.Open STemp, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
  21.     blnOpen = False
  22.     ' 判断“用户组权限”数据是否为空
  23.     If Rs1.RecordCount < 1 Then
  24.         blnOpen = False
  25.     Else
  26.         Rs1.MoveFirst
  27. ' 判断当前“登录用户”是否有权限打开 FormID 对应的窗体
  28.         For i = 1 To Rs1.RecordCount
  29.             If Rs1(" 用户组 ID") = UserID And Rs1(" 窗体 ID") = FormID And Rs1(" 权限 ") = True Then
  30.                 blnOpen = True
  31.             Else
  32.                 Rs1.MoveNext
  33.             End If
  34.         Next i
  35.     End If
  36. ' 在“系统窗体表”数据表中搜索待打开窗体的“名称”
  37.     Rs2.MoveFirst
  38.     For i = 1 To Rs2.RecordCount
  39.         If Rs2("窗体 ID") = FormID Then
  40.             FormName = Rs2(" 窗体名称 ")
  41.         Else
  42.             Rs2.MoveNext
  43.         End If
  44.     Next i
  45. ' 判断用户是否有权限打开窗体,blnOpen 为“真”有权限
  46.     If blnOpen = False Then
  47.         MsgBox " 您没有权限使用 " & "“" & FormName & "”窗体 ", vbCritical, " 无权使用 "
  48.        Exit Function
  49.     Else
  50.         DoCmd.OpenForm FormName, acNormal, , , , acWindowNormal
  51.     End If
  52.     Set Rs1 = Nothing
  53.     Set Rs2 = Nothing
  54.     Exit Function
  55. Err_OpenForm:
  56.     Set Rs1 = Nothing
  57.     Set Rs2 = Nothing
  58.     MsgBox Err.Description, vbOKOnly, "窗体打开错误"
  59. End Function

最后需要调用该函数的地方直接调用好了。如果没有权限就会有以下提示。

Access 权限 判断函数(2)

正文完
 
水东柳
版权声明:本站原创文章,由 水东柳 2019-02-22发表,共计1727字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)