Access权限 判断函数(2)

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

  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

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

版权声明:
作者:水东柳
链接:https://shuidl.com/1559.html
来源:水东柳博客
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
打赏
< <上一篇
下一篇>>