Ms access Access 2007 VBA:将Tabledef.Connect属性设置为无效路径
我被要求对Access 2007 VBA数据库进行一些维护 它已将表链接到同一文件夹中的另一个Access数据库。它具有指向该数据库的硬编码链接,因此如果用户将文件夹复制到新文件夹,它将尝试使用原始文件夹中的链接数据库。他们要求我消除在这种情况下使用错误链接数据库的危险 我添加了在数据库打开时运行的代码,以使其重置到数据库自己文件夹中的链接。如果链接数据库不存在或已重命名,则会提示用户浏览到正确的数据库。到目前为止还不错 但是如果用户取消该对话框,我不想让它连接到错误的数据库。我想将linked tabledef的Connect属性设置为“正确”路径,即使该表不存在。然后,用户将得到一个错误,即链接表在复制到链接数据库之前不存在,而不是无意中使用了错误的数据库 当我使用Resume Next通过将Connect属性设置为不存在的数据库时引发的错误时,更改不会持续,使其连接到错误的数据库。所以现在,当发生这种情况时,我将关闭数据库(在警告用户无法找到链接的数据库之后)。就不使用错误的数据库而言,这是安全的,但我认为这不是理想的用户体验 那么--是否可以将Tabledef的Connect属性设置为不存在的数据库 谢谢 格雷格 是否可以将Tabledef的Connect属性设置为不存在的数据库 我不这么认为。我建议您首先删除所有链接表,然后如果没有要连接的数据库,则显示这样说的错误Ms access Access 2007 VBA:将Tabledef.Connect属性设置为无效路径,ms-access,ms-access-2007,vba,Ms Access,Ms Access 2007,Vba,我被要求对Access 2007 VBA数据库进行一些维护 它已将表链接到同一文件夹中的另一个Access数据库。它具有指向该数据库的硬编码链接,因此如果用户将文件夹复制到新文件夹,它将尝试使用原始文件夹中的链接数据库。他们要求我消除在这种情况下使用错误链接数据库的危险 我添加了在数据库打开时运行的代码,以使其重置到数据库自己文件夹中的链接。如果链接数据库不存在或已重命名,则会提示用户浏览到正确的数据库。到目前为止还不错 但是如果用户取消该对话框,我不想让它连接到错误的数据库。我想将linked
为了重新链接这些表,您需要在前端文件中有一个本地表,其中包含要链接的所有表的列表。然后,每次需要重新链接表时,您都需要循环浏览该列表,假设链接已全部删除。要更新表链接以使其无效,您需要
- 创建后端数据库的临时副本(或者可能是带有空表的“骨架”后端数据库的临时副本)
- 更新表链接以指向临时数据库,然后
- 删除临时数据库
选项比较数据库
选项显式
子MakeBadLink()
Const linkedTableName=“myLinkedTable”测试值
Dim cdb作为DAO.Database,tbd作为DAO.TableDef
Dim tempFolder作为字符串,linkedDb作为字符串,tempDb作为字符串
将fso设置为文件系统对象
设置cdb=CurrentDb
linkedDb=Mid(cdb.TableDefs(linkedTableName.Connect,11)“删除”数据库=“前缀
Set fso=新文件系统对象
tempFolder=fso.GetSpecialFolder(临时文件夹)&“\”
tempDb=tempFolder&fso.GetFileName(linkedDb)
fso.CopyFile链接数据库,tempDb,True
Set tbd=cdb.TableDefs(linkedTableName)
tbd.Connect=“;DATABASE=“&tempDb
待定。刷新链接
设置待定=无
设置cdb=无
fso.delete文件tempDb
设置fso=无
端接头
随后尝试使用[myLinkedTable]会导致错误
找不到文件'C:\Users\Gord\AppData\Local\Temp\myDb.accdb'
可以将链接数据库的路径存储在表中,并在打开数据库时检查它是否与currentproject.path相同。