Ms access 在MS Access(2013)中刷新链接表不起作用
这是我创建的一个接口,用于在IT部门决定更改网络名称或路径时帮助客户端切换数据库链接 我正在努力清理一个被我打乱的常规。它过去工作得很好,但现在它不能刷新,我也不明白为什么 1) 当用户单击“浏览”为数据库选择新路径时,我将此例程称为:Ms access 在MS Access(2013)中刷新链接表不起作用,ms-access,vba,Ms Access,Vba,这是我创建的一个接口,用于在IT部门决定更改网络名称或路径时帮助客户端切换数据库链接 我正在努力清理一个被我打乱的常规。它过去工作得很好,但现在它不能刷新,我也不明白为什么 1) 当用户单击“浏览”为数据库选择新路径时,我将此例程称为: Private Sub cmdBrowsePath_Click() Dim strFile As String Dim strPath As String Dim strNewPath As String strFile =
Private Sub cmdBrowsePath_Click()
Dim strFile As String
Dim strPath As String
Dim strNewPath As String
strFile = GetFilePath("Locate and select the Master Database")
If strFile <> "" Then
Me.txtMaster = strFile
Call ChangeLinkPath("TBL_VERSION_LATEST", Me.txtMaster)
End If
End Sub
Private Sub-cmdBrowsePath_Click()
作为字符串的Dim strFile
将strPath设置为字符串
作为字符串的暗淡strNewPath
strFile=GetFilePath(“找到并选择主数据库”)
如果是strFile“”,则
Me.txtMaster=strFile
调用ChangeLinkPath(“TBL\U版本\最新版本”,Me.txtMaster)
如果结束
端接头
2) 当选择一个新路径时,我希望链接表自动切换到用户选择的路径-我调用一个名为ChangeLinkPath的例程,我这样调用它:
Public Sub ChangeLinkPath(strLinkName As String, strNewPath As String)
On Error GoTo ChangeLinkPath_Err
Dim db As DAO.Database
Dim TDF As DAO.TableDef
Set db = CurrentDb
Set TDF = db.TableDefs(strLinkName)
If (Mid(TDF.Name, 1, 4) <> "MSys" And Mid(TDF.Name, 1, 4) <> "~TMP") Then
Debug.Print "Current link: " & TDF.Connect
TDF.Connect = ";DATABASE=" & strNewPath
TDF.RefreshLink
db.TableDefs.Refresh
Debug.Print "AFTER REFRESHING: " & TDF.Connect
End If
Set TDF = Nothing
ChangeLinkPath_Err:
Select Case Err.Number
Case 3011
MsgBox "'" & strLinkName & "' is NOT in this engine. Make sure you point to an engine that has the same tables or DELETE the linked table if you no longer wish to refresh it. The original link has not been changed.", vbCritical, "Skipping - " & strLinkName
End Select
ChangeLinkPath_Exit:
Set db = Nothing
Set TDF = Nothing
End Sub
Public子ChangeLinkPath(strLinkName作为字符串,strNewPath作为字符串)
错误转到ChangeLinkPath\u错误
Dim数据库作为DAO.Database
将TDF调暗为DAO.TableDef
Set db=CurrentDb
设置TDF=db.TableDefs(strLinkName)
如果(Mid(TDF.Name,1,4)“MSys”和Mid(TDF.Name,1,4)”~TMP),那么
调试。打印“当前链接:&TDF.Connect”
TDF.Connect=“;DATABASE=“&strNewPath
刷新链接
db.TableDefs.Refresh
刷新后调试.Print:&TDF.Connect
如果结束
设置TDF=无
更改链接路径错误:
选择案例错误编号
案件3011
MsgBox“'”&strLinkName&“”不在此引擎中。请确保指向具有相同表的引擎,或者如果不再希望刷新链接表,请删除该链接表。原始链接尚未更改。“,vbCritical,“跳过-”&strLinkName
结束选择
ChangeLinkPath\u退出:
Set db=Nothing
设置TDF=无
端接头
除了最重要的部分-更改链接路径外,一切都正常
我在选择新路径后检查链接,它只在文本框中更改,而不在链接本身中更改。当我将鼠标悬停在链接上时,它仍然具有旧路径。我错过了什么
如果我知道的话,我可以让这个基本部分用于更改任何链接路径。所以刷新后您的
Debug.Print:“
显示旧的连接字符串?嗯。试着删除db.TableDefs.Refresh,这应该是不必要的。实际上,刷新后的Debug.Print甚至不会发生。刷新是我试图看到代码实际上通过了这一点。它似乎只是跳过了它。所以我转到数据库窗口,当我将鼠标悬停在链接上时,我在数据库窗口中看到了旧的链接。我尝试全部刷新并重新启动数据库。似乎什么都不起作用。然后我建议在您的错误处理程序中使用Case Else Msgbox Err.Description
。我修复了路径,现在链接终于更改了,但仍然得到一个空白错误。是因为没有错误号吗?我决定将err.number设为“0-”,因为当前的解决方案似乎工作正常。如果有人能告诉我需要做些什么来清理“0-”err.number,我很乐意修复它。