【发布时间】:2012-05-22 05:01:29
【问题描述】:
我希望为 Access .MDB 添加一些基本的安全性。我想做的是从 VBA 查询 Active Directory(我有这个代码),然后如果用户不在正确的组中,请关闭数据库中每个表单的允许更新、删除、插入。基本上,只允许只读。
这可能吗?我怎样才能在 VBA 中做到这一点?有没有办法在 autoexec 方法中设置一次,而不是在每个表单上设置一次?
或者这里有另一种提供简单安全性的方法吗?例子?
【问题讨论】:
我希望为 Access .MDB 添加一些基本的安全性。我想做的是从 VBA 查询 Active Directory(我有这个代码),然后如果用户不在正确的组中,请关闭数据库中每个表单的允许更新、删除、插入。基本上,只允许只读。
这可能吗?我怎样才能在 VBA 中做到这一点?有没有办法在 autoexec 方法中设置一次,而不是在每个表单上设置一次?
或者这里有另一种提供简单安全性的方法吗?例子?
【问题讨论】:
您可以为单个表单设置AllowAdditions、AllowDeletions 和AllowEdits,过程如下:
Public Sub SetFormEdit(ByVal pName As String, _
ByVal pReadOnly As Boolean)
Dim frm As Form
DoCmd.OpenForm pName, acDesign
Set frm = Forms(pName)
frm.AllowAdditions = pReadOnly
frm.AllowDeletions = pReadOnly
frm.AllowEdits = pReadOnly
DoCmd.Close acForm, pName, acSaveYes
Set frm = Nothing
End Sub
为所有表单运行该过程...
Public Function SetAllFormsEdit()
Dim blnReadOnly As Boolean
Dim frm As Object
'load value for blnReadOnly from your existing AD code '
For Each frm In CurrentProject.AllForms
SetFormEdit frm.Name, blnReadOnly
Next frm
Set frm = Nothing
End Function
然后从autoexec 宏的RunCode 操作中调用SetAllFormsEdit 函数。
【讨论】: