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