【问题标题】:Closing a database using VBA code from a seperate database使用来自单独数据库的 VBA 代码关闭数据库
【发布时间】:2012-07-04 01:01:57
【问题描述】:

是否可以通过另一个数据库(数据库 B)中的 VBA 代码关闭一个 Access 数据库(我们称之为数据库 A)。

在此处的示例中,如果数据库 A 在数据库 B 启动时打开,我希望数据库 A 关闭。这可以使用 VBA 吗?

我有一个谷歌,但所有答案似乎都与使用 VBA 关闭当前数据库有关,这当然可以通过 DoCmd.Quit 实现。

非常感谢任何帮助。

【问题讨论】:

  • 数据库之间有关联吗?
  • 不——不是有任何链接表等的意义。它们都执行相同功能的不同方面,所以主题链接!
  • 启动数据库 B 的用户是否与打开数据库 A 的用户相同?
  • @HansUP - 是的 - 请参阅下面的解释重新克隆等。

标签: database ms-access vba ms-access-2007


【解决方案1】:

你可以劫持它:

Dim OtherDB As Object

sOther = "Z:\Documents\other.accdb"
Set OtherDB = GetObject(sOther)
OtherDB.Application.Quit

这可能会让某人的生活变得困难。

【讨论】:

  • 你好,Remou!谢谢,将尝试并报告 - 它应该不会导致任何问题,因为要关闭的数据库只是暂时的:数据库 B 的功能是删除数据库 A。
  • @OliJeffery 这可能是题外话,但为什么数据库 B 的唯一功能是删除数据库 A?你的意思是关闭而不是删除?
  • 我们有一个包含多个(超过 300 个)用户的数据库。我拆分数据库以阻止损坏。传统上,我会给所有用户他们自己的数据库前端副本。但是,我们通过 Citrix 而不是我们的本地计算机访问我们所有的程序,所以这是不可能的。相反,我所做的是创建一个启动器,该启动器在有人登录时生成前端的临时克隆,因此每个人都在不同的前端工作,防止损坏。数据库 B 的功能是在注销后删除克隆 (A),这样我们就没有未使用的克隆的踪迹。
  • @Tony318 - 为了更准确地回答您的问题,数据库 B 是要删除数据库 A,但首先它必须关闭数据库 A,否则 Kill 功能不起作用;它必须来自数据库 B 而不仅仅是数据库 A 上的 DoCmd.Quit,因为 A 启动 B,它在打开时运行代码,通常在 DoCmd.Quit 从 A 启动之前。
【解决方案2】:

我知道这个问题很老,但也许这会对某人有所帮助。我有一个数据库,我在其中使用 VBA 打开另一个数据库并运行一个宏。我想然后关闭数据库。对我有用的代码如下,它包括从打开到关闭的整个过程。

Function functionName()

Static acc As Access.Application
Dim db As DAO.Database
Dim dbname As String
dbname = "absolutePathToDBHere.accdb"
Set acc = New Access.Application
acc.Visible = True
Set db = acc.DBEngine.OpenDatabase(dbname, False, False)
acc.OpenCurrentDatabase dbname
acc.DoCmd.RunMacro ("macroName")
acc.DoCmd.Quit acQuitSaveAll

db.Close
Set db = Nothing

End Function

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-06
    • 1970-01-01
    • 1970-01-01
    • 2012-03-09
    • 2012-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多