【问题标题】:Access 2003: run code on database closeAccess 2003:在数据库关闭时运行代码
【发布时间】:2010-10-01 02:25:28
【问题描述】:

在 Access 2003 中,有一些方法可以在打开表单或数据库时运行代码,但是在关闭数据库时呢?

我的动机是不可避免地使用一些有问题的第三方 COM 库。释放 COM 引用(通过将变量设置为 Nothing)会导致它(正确地)与其服务器断开连接。问题是它不能在不退出进程并启动新进程的情况下重新连接(这是一个已知的错误)。在这种情况下,进程就是整个 Access IDE :(

理想情况下,我希望将 COM 引用存储在某个位置,以防止 VBA“重置”操作清除全局变量(在调试过程中很常见,有时由代码编辑强制执行)。但是我希望有机会在数据库关闭之前进行清理。

【问题讨论】:

    标签: ms-access vba ms-access-2003


    【解决方案1】:

    如果您有一个设置为在数据库启动时自动打开的表单,您可以在数据库关闭时运行代码......并让表单保持打开状态。然后您可以使用表单的 On Close 事件来运行您的清理代码:

    Private Sub Form_Close()
        'do your stuff here '
    End Sub
    

    【讨论】:

    • +1 好主意。现在我如何从 VBA 调用 AddRef(它给出一个错误),并将 COM 引用转换为一个整数以便存储它?
    • 没关系,我已经发布了一个全新的问题:stackoverflow.com/questions/3836046/…
    【解决方案2】:

    不要释放引用。让 Access 在关闭时执行此操作。

    【讨论】:

    • 但我想在 Access(或数据库)关闭之前进行一些清理。 Access 不会为我做这件事。
    • 您的意思是使用有缺陷的 COM 库进行清理?不要在 Access 会话中执行此操作,请等到他们退出 Access。
    • 我正在从 Access VBA 调用 COM 库。我想以同样的方式进行清理。
    • 我永远不想依赖 VBA 来发布外部引用。当我的应用程序退出时,我想自己清除它们。通常的方法是有一个隐藏的表单,它的 OnClose 事件调用拆解代码。
    猜你喜欢
    • 2010-12-10
    • 1970-01-01
    • 1970-01-01
    • 2013-04-20
    • 1970-01-01
    • 1970-01-01
    • 2015-02-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多