背景
名为VCS(项目名称= VCS)的版本控制数据库用于各种版本控制任务。
其他各种应用程序数据库都将VCS设置为参考。
在这些应用数据库中,设置了一个全局变量来标识其中要备份的表:
Global Const APP_TABLES_TO_BACKUP = "tbl1, tbl2, tbl5"
问题
问题是,如何从VCS项目中引用此APP_TABLES_TO_BACKUP
常量?
因为每个应用程序都有自己的设置值,所以在应用程序的模块中设置值并从VCS数据库项目中调用该值是有意义的。
关于如何做到这一点的任何想法?
到目前为止......
我搜索并发现了Chip Pearson的Understanding Scope,但还没有完全了解如何设置和引用全局变量。
在应用程序的即时窗口中,我可以键入?APP_TABLES_TO_BACKUP
并检索表,但我似乎无法看到如何从VCS数据库引用相同的变量,因此可以在子例程中使用它
任何想法?
答案 0 :(得分:1)
您可以在VCS数据库中添加对外部数据库的引用。
如何?请参阅this answer。
确保两个数据库之间的模块和功能名称不会发生冲突。然后,您可以使用MyModule.APP_TABLES_TO_BACKUP
引用您的const,或者如果您有多个具有相同模块和常量名称的项目,MyProject.MyModule.APP_TABLES_TO_BACKUP
答案 1 :(得分:0)
由于我之前的帖子显然几天前没有发现......
在进一步搜索之后,我遇到了Paul Murray's custom database properties,效果很好。
通过一些调整,我创建了一个包含通用属性添加,删除方法的模块。
' ---------------------------------
' FUNCTION: AddDbProperty
' Description: add custom properties to a database application
' ---------------------------------
Public Function AddDbProperty(DbProperty As String, _
DbPropertyValue As String, _
Optional DbPropertyType As Long = DB_TEXT, _
Optional DbFilename As String = "Current")
On Error GoTo Err_Handler
Dim db As DAO.Database
Dim prop As Property
If DbFilename = "Current" Then
Set db = DBEngine(0)(0)
Else
Set db = OpenDatabase(DbFilename)
End If
'add the property
Set prop = db.CreateProperty(DbProperty, DbPropertyType, DbPropertyValue)
db.Properties.Append prop
Exit_Handler:
db.Close
Set db = Nothing
Exit Function
Err_Handler:
Select Case Err.Number
Case Else
MsgBox "Error #" & Err.Number & ": " & Err.description, vbCritical, _
"Error encountered (#" & Err.Number & " - AddDbProperty[mod_Dev_Properties])"
End Select
Resume Exit_Handler
End Function
' ---------------------------------
' FUNCTION: RemoveDbProperty
' Description: remove custom properties from a database applciation
' ---------------------------------
Public Function RemoveDbProperty(DbProperty As String, _
Optional DbFilename As String = "Current")
On Error GoTo Err_Handler
Dim db As DAO.Database
If DbFilename = "Current" Then
Set db = DBEngine(0)(0)
Else
Set db = OpenDatabase(DbFilename)
End If
'remove the property
db.Properties.Delete DbProperty
Exit_Handler:
db.Close
Set db = Nothing
Exit Function
Err_Handler:
Select Case Err.Number
Case Else
MsgBox "Error #" & Err.Number & ": " & Err.description, vbCritical, _
"Error encountered (#" & Err.Number & " - RemoveDbProperty[mod_Dev_Properties])"
End Select
Resume Exit_Handler
End Function
' ---------------------------------
' FUNCTION: UpdateDbProperty
' Description: add custom properties to a database application
' ---------------------------------
Public Function UpdateDbProperty(DbProperty As String, _
DbPropertyValue As String, _
Optional DbFilename As String = "Current")
On Error GoTo Err_Handler
Dim db As DAO.Database
If DbFilename = "Current" Then
Set db = DBEngine(0)(0)
Else
Set db = OpenDatabase(DbFilename)
End If
'add the property
db.Properties(DbProperty) = DbPropertyValue
Exit_Handler:
db.Close
Set db = Nothing
Exit Function
Err_Handler:
Select Case Err.Number
Case Else
MsgBox "Error #" & Err.Number & ": " & Err.description, vbCritical, _
"Error encountered (#" & Err.Number & " - UpdateDbProperty[mod_Dev_Properties])"
End Select
Resume Exit_Handler
End Function
可以添加/更新/删除使用IDE即时窗口属性。
例如:
?AddDbProperty("My Property Name","My Property value")
通过vba
可以轻松地检索该属性 CurrentDb.Properties("My Property Name")
感谢大家提供可行的投入!