gpt4 book ai didi

ms-access - 在 VBA 中更改 tabledef .connect 属性

转载 作者:行者123 更新时间:2023-12-04 12:51:57 27 4
gpt4 key购买 nike

我正在尝试做我做过一百次的事情,但它突然不起作用。

acc.AutomationSecurity = msoAutomationSecurityLow   'Remove Security Prompt
acc.OpenCurrentDatabase path & "Year " & Range("yr") & "\" & Range("yr") & Range("mo") & "\Year " & Range("yr") & Range("mo") & " GENERIC DB NAME.mdb", True

'update link
acc.CurrentDb.TableDefs("TABLE NAME").Connect = "MS Access;DATABASE=" & path & "Year " & Range("yr") & "\" & Range("yr") & Range("mo") & "\Year " & Range("yr") & Range("mo") & " OTHER DB.mdb"
acc.CurrentDb.TableDefs("TABLE NAME").RefreshLink

我不知道这是否与我们最近更新到 Excel 2010 并且数据库仍然是 ACCESS 2003 的事实有关,但这应该是一段简单的代码来运行。当我运行上面的代码时没有任何 react 。该文件以正确的方式打开,但连接字符串永远不会分配给 table def 对象,即。它运行没有错误,但表没有链接到新数据库。我发现下面的代码确实有效,并用它来解决这个问题。我仍然很好奇为什么我不能以 'application.currentdb.tabledef("TABLE").connect' 样式为 .connect 属性分配值,但如果我将 currentdb 分配给一个新的数据库对象,我可以。

所以我不知道为什么,但是如果我使用它,它就可以了
dim db as DAO.database
set db = acc.CurrentDb
db.TableDefs("TABLE NAME").Connect = "MS Access;DATABASE=" & path & "Year " & Range("yr") & "\" & Range("yr") & Range("mo") & "\Year " & Range("yr") & Range("mo") & " OTHER DB.mdb"
db.TableDefs("TABLE NAME").RefreshLink

感谢您的任何帮助,您可以提供。

最佳答案

我遇到了类似的问题。当试图通过 CurrentDb 直接执行此操作时(即 CurrentDb.TableDefs("foo").Connect )不起作用并且没有引发错误。

原因是:每次引用CurrentDB ,这是一个新的实例。

在您的第二种方法中,您创建了一个设置为 CurrentDb 的数据库对象,这是您的第二种方法有效。

长话短说:
好的:

Dim Db as Database
Set Db = CurrentDb
Db.TableDefs("foo").Connect = "New connection string"
Db.TableDefs("foo").RefreshLink

坏的:
CurrentDb.TableDefs("foo").Connect = "New connection string"
CurrentDb.TableDefs("foo").RefreshLink

关于ms-access - 在 VBA 中更改 tabledef .connect 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8391447/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com