如何 运行 来自当前数据库的代码并将其应用于另一个数据库而不打开它?

How to run a code from current database and apply it on another database without opening it?

在 Access 2007 中,我在前端数据库中创建了一个自动 'dynamic table linker' 程序 (VBA),我想 运行 此代码并将其应用到后端数据库无需打开它(或在用户不知情的情况下在后台运行)。

我目前的方法是在从后端启动时自动打开后端数据库和运行程序。但是,每次打开后端时都会 运行 。

我只想 运行 从前端重定向的程序,并可能在它 运行 时对用户隐藏它。有什么办法可以解决这个需求吗?

说明:我需要运行将前端已有的代码应用到后端,即消除代码重复。

您可以在前端数据库中运行以下代码。

Sub ReLink Dim objAccess As New Access.Application objAccess.OpenCurrentDatabase "\server\routetobackend\nameofbackenddatabase.accdb" objAccess.Eval "Function_to_relink('parameter')" End Sub

其中Function_to_relink是后台数据库中的函数,

其他可能有用的信息:https://msdn.microsoft.com/en-us/library/office/aa221161%28v=office.11%29.aspx

好的,这就是我要做的(网上有很多重新链接的例子,所以我不会在这里展示任何细节):

原码:

Public Sub RelinkTables(sOldLink As String, sNewLink As String)
    Dim oLinkDb As DAO.DataBase
    Set oLinkDb = CurrentDb
    ' do your linking for oLinkDb

新代码:

Public Sub RelinkTables(oLinkDb As DAO.DataBase, sOldLink As String, sNewLink As String)
    ' do your linking for oLinkDb

调用前端:

RelinkTables(CurrentDb, "OldLinkPath",  "NewLinkPath")

后台远程调用:

Dim objAccess As New Access.Application
objAccess.OpenCurrentDatabase "\Path\Backend.accdb"
RelinkTables(objAccess.CurrentDb, "OldLinkPath",  "NewLinkPath")

这样,您就有了一个例程,RelinkTables(),它可以重新链接给它的任何数据库。还是得打开后台relink,没办法。