【问题标题】:Globally disable update/delete from Access VBA?从 Access VBA 全局禁用更新/删除?
【发布时间】:2012-05-22 05:01:29
【问题描述】:

我希望为 Access .MDB 添加一些基本的安全性。我想做的是从 VBA 查询 Active Directory(我有这个代码),然后如果用户不在正确的组中,请关闭数据库中每个表单的允许更新、删除、插入。基本上,只允许只读。

这可能吗?我怎样才能在 VBA 中做到这一点?有没有办法在 autoexec 方法中设置一次,而不是在每个表单上设置一次?

或者这里有另一种提供简单安全性的方法吗?例子?

【问题讨论】:

    标签: ms-access vba


    【解决方案1】:

    您可以为单个表单设置AllowAdditionsAllowDeletionsAllowEdits,过程如下:

    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 函数。

    【讨论】:

    • -这看起来很完美,我一直在寻找一个全局设置并且完全忽略了循环遍历 AllForms 集合。我会试一试,然后告诉你。
    猜你喜欢
    • 1970-01-01
    • 2016-11-13
    • 1970-01-01
    • 2020-03-04
    • 2016-06-14
    • 1970-01-01
    • 1970-01-01
    • 2018-03-13
    • 1970-01-01
    相关资源
    最近更新 更多