什么是DB.Properties(??)变量?专门设置默认功能区

时间:2012-08-12 21:21:32

标签: ms-access access-vba

我有一个Access 2007应用程序,我正在更新,以便能够在2007年和2010年运行。在2007年,我使用表单功能区属性,但在2010年,我需要制作一个默认功能区,关闭后台。我已经完成了,但是当应用程序检测到它在2010而不是2007上运行时,它也需要将其设置为默认值。加载自定义UI不起作用。它会加载它,但它不会将功能区设置为默认值。我知道我可以使用database.properties函数设置默认的启动表单和其他属性。但我需要知道应用程序默认功能区的属性名称。有人知道房产名称吗?

2 个答案:

答案 0 :(得分:1)

我认为您要查找的数据库属性的名称是:CustomRibbonId

这是一些将数据库属性列表输出到Debug窗口的代码。

Private Sub EnumerateDatabaseProperties()
    On Error Resume Next
    Dim p1 As DAO.Property, s1 As String
    For Each p1 In CurrentDb.Properties
        s1 = p1.Name
        s1 = s1 & "=" & p1.value
        Debug.Print s1
    Next p1
End Sub

请注意,如果数据库属性不存在,它可能不会显示在输出中,而不是仅显示在输出中没有值。

答案 1 :(得分:0)

首先我们需要一个健壮的方法来设置数据库属性。

Public Sub SetCurrentDBProperty(ByVal propertyName As String, ByVal newValue As Variant, Optional ByVal prpType As Long = dbText)
    Dim thisDBs As Database
    Set thisDBs = CurrentDb
    Dim wasFound As Boolean
        
    ' Look for property in collection
    Dim thisProperty As Object ' DAO.Property
    For Each thisProperty In thisDBs.Properties
        If thisProperty.Name = propertyName Then
            ' Check for matching type
            If thisProperty.Type <> prpType Then
                ' Remove so we can add it back in with the correct type.
                thisDBs.Properties.Delete propertyName
                Exit For
            End If

            wasFound = True
            
            ' Skip when no change is required
            If thisProperty.Value = newValue Then
                Exit For
            Else
                ' Update value
                thisProperty.Value = newValue
            End If
        End If
    Next thisProperty
    
    If Not wasFound Then
        ' Add new property
        Set thisProperty = thisDBs.CreateProperty(propertyName, prpType, newValue)
        thisDBs.Properties.Append thisProperty
    End If
End Sub

然后给定一个示例功能区名称 Runtime,您可以像这样调用属性设置器:

Public Sub SetRuntimeRibbon()
    SetCurrentDBProperty "CustomRibbonID", "Runtime"
End Sub