Access 2007 Linkedtable管理器拒绝重新链接具有“附件”数据类型的字段的表。
问题:
将拆分数据库放置在另一个文件夹中时,应使用链接表管理器重新链接表。 但是,Linkedtable管理器确实拒绝重新链接具有“附件”数据类型字段的表。
症状:
打开Linkedtable管理器,然后选择一个带有“附件”数据类型字段的链接表。 现在尝试将表重新链接到另一个文件夹。 如果“旧”路径不存在,Access将抛出错误“无效路径”,或者当该路径确实存在时,拒绝重新链接。
原因:
系统表MSysObjects使用旧路径保存对“ MSysComplexType”的引用。 删除具有“附件”数据类型的表时,不会删除此引用。
解析度:
要重新链接表,有两种选择:
- 删除“附件”数据类型字段,重新链接并再次添加该字段。 这仅是“空”或接近空表的选项。 另一个问题是原始数据库中可选添加的库。
- 创建一个新数据库以获取一个空的MSysObject,创建一个具有“附件”数据类型字段的表的新链接,最后导入所有其他数据库对象(MSys表除外)和已链接的表。
移动包含“ Attachment”数据类型字段的表的数据库的步骤:
- 将所有文件放在新文件夹中。
- 更改前端数据库的名称,例如通过在“ .accdb”之前附加“ Old”
- 启动MS Access 2007,并在正确的位置创建一个具有原始名称的新数据库。
- 打开新数据库,然后直接关闭默认的“ Table1”
- 单击NavigationPane中的“所有表”,然后选择“类别导航/对象类型”
- 选择“外部数据/导入/访问”,然后选择选项“链接...”。
- 使用[浏览]按钮导航到后端数据库,然后按[打开]
- 按[确定],仅选择具有“附件”数据类型字段的表,然后按[确定]
- 选择“外部数据/导入/访问”
- 使用[浏览]按钮导航到“旧”数据库,然后选择“导入...”选项。
- 按[确定]。
- 在“导入对象”窗口中,为每个对象选项卡按“全选”。 (有六个!)
- 注意:在“表”选项卡上,必须取消选择“ MSys ...”表和带有“附件”数据类型字段的表。 (单击它们可获得白色背景)
- 关闭“导入对象”窗口,然后转到“数据库工具/数据库工具/ Linkedtable管理器”
- 按[全选]并删除不在后端数据库中的表的复选标记。
- 选择“总是询问新位置”(左下角),然后按[确定]
- 选择后端数据库,然后按[打开]
- 关闭Linkedtable管理器。
- 现在可以使用该数据库了。
如果有要移动的引用,请在“旧”数据库中使用此功能:
Function fncShowReferences()
'-----------------------------------------------------------
' Input : None
' Target : Generating function to create the references in another database
' Created By : Nico Altink 28/oct/2007
' Last changed: Nico Altink 28/oct/2007
'-----------------------------------------------------------
Dim ref As Reference
Debug.Print "Function fncCreateReferences()"
Debug.Print "' Skip errors for available references"
Debug.Print "On Error resume next"
For Each ref In Application.References
' Skip the builtin references
If Not ref.BuiltIn Then
Debug.Print "Application.References.AddFromFile (""" & ref.FullPath & """)"
End If
Next
Debug.Print "End Function"
End Function
执行此函数后,它将在立即窗口中创建一个函数以放置所有引用。
将其复制/粘贴到新的前端数据库的模块中,然后运行(F5)该功能。