使用VBA对Microsoft Access 2013中的导航和菜单进行精确控制

暴乱

我已经在安全级别驱动的MS Access数据库中创建了一个管理窗口。当确定用户的安全性是1,admin或2,则向用户显示此admin选项卡。

为了追逐目标,我创建了一个“切换按钮”(虽然不能达到我的预期目的,但确实可以实现窍门-相当不错)在我了解测试功能之前,它一直处于beta模式。

切换按钮显示“隐藏菜单”,它涉及导航,表格,查询...本质上是用户无意进入VBA,设计或查询以及解散任何内容所能做的所有事情。

再次单击切换按钮时,将恢复以上所有功能。

但是,即使它起作用,我也不确定是什么因素在起作用,因为其中一个设置会立即发生(功能区),然后直到重新启动Access时我才能看到其他设置。

这是按钮的代码:

Private Sub cmdToggleHide_Click()
    Select Case Me.cmdToggleHide.Caption

    Case "Show Menus"
        Call EnableSetProperty(True)
        Me.cmdToggleHide.Caption = "Hide Menus"
    Case "Hide Menus"
        Call EnableSetProperty(False)
        Me.cmdToggleHide.Caption = "Show Menus"
    End Select
End Sub

Public Function EnableSetProperty(bTrueFalse As Boolean)
On Error GoTo ThisError

'True means show all of access

If bTrueFalse = True Then
     DoCmd.ShowToolbar "Ribbon", acToolbarYes


Else
     DoCmd.ShowToolbar "Ribbon", acToolbarNo

End If

    SetProperties "StartUpShowDBWindow", dbBoolean, bTrueFalse ' Display Database Window
    SetProperties "StartUpShowStatusBar", dbBoolean, bTrueFalse 'Status Bar
    SetProperties "AllowFullMenus", dbBoolean, bTrueFalse 'Access Full Menus
    SetProperties "AllowSpecialKeys", dbBoolean, bTrueFalse 'F11, ALT F11, etc.
    SetProperties "AllowBypassKey", dbBoolean, bTrueFalse 'Shift Key Override on loading
    SetProperties "AllowShortcutMenus", dbBoolean, bTrueFalse 'Access Shortcut Menus. May be too severe
    SetProperties "AllowToolbarChanges", dbBoolean, bTrueFalse 'Prevent Changes
    SetProperties "AllowBreakIntoCode", dbBoolean, bTrueFalse 'Code Access'

Exit Function




ThisError:

MsgBox Err.Description

Exit Function

End Function



Public Function SetProperties(strPropName As String, varPropType As Variant, varPropValue As Variant) As Integer

On Error GoTo Err_SetProperties

Dim db As Database, prop As Property
Set db = CurrentDb
db.Properties(strPropName) = varPropValue
SetProperties = True

Set db = Nothing

Exit_SetProperties:

     Exit Function

Err_SetProperties:

     If Err = 3270 Then 'Property not found'

         Set prop = db.CreateProperty(strPropName, varPropType, varPropValue)
         db.Properties.Append prop
         Resume Next

     Else
         SetProperties = False
         MsgBox "Runtime Error # " & Err.Number & vbCrLf & vbLf & Err.Description
         Resume Exit_SetProperties

     End If

End Function

当我单击“隐藏菜单”按钮(打算“武装”或保护它)时发生的第一个古怪的事情是,顶部的功能区立即消失了。而且我不介意此设置是否确实需要,但是对于其余设置要“使用”,我必须关闭数据库并再次重新打开它。

当我重新打开它时,现在隐藏了导航的麻烦,并且无法“右键单击”表单来访问“设计视图”,并且按住“ Shift”不会绕过启动。但是,功能区现在又回来了。我不认为我有任何遗漏。这还不错,因为功能区上可访问的内容几乎没有害处。但是我不知道为什么会回来。

为了取消对系统的保护,您必须以管理员身份登录,在这种情况下,您仍然可以访问“管理员”标签和“隐藏/显示”菜单切换按钮。并且由于我没有将切换按钮与表中的值同步,因此它反映了当前状态,因此即使此时显示“ Show”,按钮仍然会显示“ Hide”(隐藏),因此biggie,我只需单击一次“隐藏”,然后按钮显示“显示”,然后单击“显示”,关闭访问权限,瞧瞧,导航和所有设置都恢复正常。为什么我没有将按钮与表中的值同步?因为我无法确定为什么这些设置不同步。当我尝试利用表中的复选框为不同的用户设置不同的设置时,情况将变得更加复杂。

如此精细。这是可行的。

但是我想让它工作,以便它按照界面布局建议的方式工作。如果我必须通知用户该设置只有在重新启动后才能进行,所以很好。但是我绝对想知道功能区发生了什么。

第二

1)色带

我的猜测:如果隐藏功能区将“粘滞”在Access会话之外,这将使Access(对于每个数据库,而不仅仅是隐藏功能区的数据库)对于不了解反拼法的人来说几乎无法使用。试想一下所有的支持电话。:o
因此,重新启动Access时始终显示功能区。

若要始终隐藏它,您需要将“显示/隐藏”状态保存在一个表中,如果它是“隐藏”,请DoCmd.ShowToolbar "Ribbon", acToolbarNo在从AutoExec调用的函数中执行

2)其他设置

这些设置也可以通过进行设置File -> Options -> Current Database如果在此处设置它们,Access会通知您必须关闭并重新打开数据库才能使它们生效。

因此,这是正常现象,是设计使然。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在VBA中附加查询以不使用WHERE参数的Microsoft Access

来自分类Dev

在 VBA 中的 SQL 中使用 Dlookup for Microsoft Access 导致未知错误

来自分类Dev

VBA(Microsoft Access)功能删除阵列中的重复项

来自分类Dev

Microsoft Access VBA在计算中使用变量字段

来自分类Dev

在VBA中,如何获取Microsoft Access 2007的“导航窗格”中选择的对象列表?

来自分类Dev

在VBA中,如何获取Microsoft Access 2007的“导航窗格”中选择的对象列表?

来自分类Dev

如果以链接形式输入数据,Microsoft Access 2013中的VBA标记复选框

来自分类Dev

使用VBA的Access 2010 Building中的报表

来自分类Dev

Microsoft Access VBA错误461

来自分类Dev

Microsoft Access VBA Datediff 错误

来自分类Dev

使用经度和纬度的距离(Excel vba到Access vba)

来自分类Dev

Microsoft Access中的联盟

来自分类Dev

在Microsoft Access中使用VBA读取Microsoft Excel工作簿,然后正常关闭它

来自分类Dev

在ACCESS 2013中使用SELECT MAX进行更新查询

来自分类Dev

Microsoft Access Compact和使用C#.accdb文件修复

来自分类Dev

Access VBA中的IF .... then语句

来自分类Dev

Access VBA 中的图表

来自分类Dev

使用VBA通过Access导航网页/模板IE

来自分类Dev

MS Access 2013:通过VBA使用MS Word的语法检查

来自分类Dev

如何测量在 Microsoft Access 中的 VBA 函数中运行的多个查询的查询时间?

来自分类Dev

如何使用SQL在Microsoft Access 2013中创建查找字段?

来自分类Dev

ORM和Microsoft Access选项

来自分类Dev

Samba和Microsoft Access辍学

来自分类Dev

在MS Access中使用Excel VBA进行SQL删除

来自分类Dev

MS Access:使用VBA进行SQL插入的日期格式

来自分类Dev

MS Access 使用 VBA 对表的列进行排序

来自分类Dev

传递参数以在 Access 中使用 VBA 进行查询并获取“”

来自分类Dev

VBA:不允许我更改Microsoft Access中另一个表单的RecordSource

来自分类Dev

跟踪Microsoft Access VBA代码的困难

Related 相关文章

  1. 1

    在VBA中附加查询以不使用WHERE参数的Microsoft Access

  2. 2

    在 VBA 中的 SQL 中使用 Dlookup for Microsoft Access 导致未知错误

  3. 3

    VBA(Microsoft Access)功能删除阵列中的重复项

  4. 4

    Microsoft Access VBA在计算中使用变量字段

  5. 5

    在VBA中,如何获取Microsoft Access 2007的“导航窗格”中选择的对象列表?

  6. 6

    在VBA中,如何获取Microsoft Access 2007的“导航窗格”中选择的对象列表?

  7. 7

    如果以链接形式输入数据,Microsoft Access 2013中的VBA标记复选框

  8. 8

    使用VBA的Access 2010 Building中的报表

  9. 9

    Microsoft Access VBA错误461

  10. 10

    Microsoft Access VBA Datediff 错误

  11. 11

    使用经度和纬度的距离(Excel vba到Access vba)

  12. 12

    Microsoft Access中的联盟

  13. 13

    在Microsoft Access中使用VBA读取Microsoft Excel工作簿,然后正常关闭它

  14. 14

    在ACCESS 2013中使用SELECT MAX进行更新查询

  15. 15

    Microsoft Access Compact和使用C#.accdb文件修复

  16. 16

    Access VBA中的IF .... then语句

  17. 17

    Access VBA 中的图表

  18. 18

    使用VBA通过Access导航网页/模板IE

  19. 19

    MS Access 2013:通过VBA使用MS Word的语法检查

  20. 20

    如何测量在 Microsoft Access 中的 VBA 函数中运行的多个查询的查询时间?

  21. 21

    如何使用SQL在Microsoft Access 2013中创建查找字段?

  22. 22

    ORM和Microsoft Access选项

  23. 23

    Samba和Microsoft Access辍学

  24. 24

    在MS Access中使用Excel VBA进行SQL删除

  25. 25

    MS Access:使用VBA进行SQL插入的日期格式

  26. 26

    MS Access 使用 VBA 对表的列进行排序

  27. 27

    传递参数以在 Access 中使用 VBA 进行查询并获取“”

  28. 28

    VBA:不允许我更改Microsoft Access中另一个表单的RecordSource

  29. 29

    跟踪Microsoft Access VBA代码的困难

热门标签

归档