1

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

4

2 回答 2

2

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

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

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

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

于 2012-08-13T14:47:08.467 回答
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
于 2021-08-02T16:55:34.473 回答