【发布时间】:2014-10-15 15:44:17
【问题描述】:
我知道 CurrentDb 返回对当前打开的数据库的引用,但它首先设置在哪里?我正在使用将表链接到多个数据库的 Access 前端,那么 CurrentDb 何时/在哪里设置?
【问题讨论】:
-
什么意思,设置在哪里?打开数据库时就设置好了.....
标签: ms-access vba ms-access-2003
我知道 CurrentDb 返回对当前打开的数据库的引用,但它首先设置在哪里?我正在使用将表链接到多个数据库的 Access 前端,那么 CurrentDb 何时/在哪里设置?
【问题讨论】:
标签: ms-access vba ms-access-2003
CurrentDb 在 Access 会话中打开数据库时设置。
如果您在不打开数据库的情况下启动 Access,或者关闭当前会话中打开的任何数据库,CurrentDb 是 Nothing ...
? CurrentDb Is Nothing
True
但是当数据库打开时,CurrentDb 不再是Nothing。
? CurrentDb Is Nothing
False
CurrentDb 现在是一个 DAO 数据库对象 ...
? TypeName(CurrentDb)
Database
? CurrentDb.Name
C:\share\Access\database1.mdb
【讨论】:
CurrentDb不是一个对象,它是一个返回一个对象的函数,所以使用CurrentDb.SomeMethod 有时会导致unexpected behaviour later in the code。有关更多血腥细节,请参阅另一个答案here。
CurrentDb 返回对该数据库的引用。如果该 db 文件包含指向另一个 db 中的表或视图的链接,CurrentDb 仍会返回对同一 Access db 的引用。当该数据库仍然打开时,它不会改变。您可以在数据表视图中打开其中一个链接表,CurrentDb 仍然返回对同一数据库的引用 --- 它不会切换到指向包含链接指向的表的外部数据库。您可以在“即时”窗口中轻松验证:Debug.Print CurrentDb.Name
CurrentDb.Name。打开链接,查看和编辑链接的数据并再次检查CurrentDb.Name。删除链接,CurrentDb.Name 仍然显示相同的数据库。