我正在尝试查找后端数据库是否正确定位 在我运行我的代码之后,如果它返回错误,一切都很好,但是当它返回时没有错误因此它会使整个应用程序停止。 以下是我的VBA代码:
Function CheckLinkedDb()
cDBPath = Application.CurrentProject.Path
Set db = CurrentDb
Dim Relink_Tables
Dim rsCheckLink As Recordset
Relink_Tables = False
For Each tdf In db.TableDefs
If Len(tdf.Connect) > 0 Then
''Linked table - test link is current
DoCmd.SetWarnings False
On Error Resume Next 'Do not stop script on error
Set rsCheckLink = db.OpenRecordset(tdf.Name) ' OPEN TABLE
DoCmd.Echo False, "Checking link for table " & tdf.Name
DoCmd.SetWarnings True
If Err Then ' COULD NOT OPEN TABLE
Relink_Tables = True
'GoTo Relink_Tables ' RECONNECT TO APPROPIATE DATABASE
Else
rsCheckLink.Close ' CLOSE TABLE THAT DID OPEN
Set rsCheckLink = Nothing
End If
End If
Next
If Relink_Tables = True Then
goto RelinkT....
End Function
答案 0 :(得分:0)
我没有看到任何明显错误的东西,也不确定是什么"它使整个应用程序停止了#34;意味着 - 无限循环?
您应该删除DoCmd.SetWarnings False / True
语句,不需要它们。
使用On Error Resume Next
在可能的错误行之后立即检查错误是一个好习惯。并且:始终尽快重置它,不运行多个代码行而不进行错误处理。
所以你的代码应该是:
For Each tdf In db.TableDefs
If Len(tdf.Connect) > 0 Then
''Linked table - test link is current
DoCmd.Echo False, "Checking link for table " & tdf.Name
On Error Resume Next 'Do not stop script on error
Set rsCheckLink = db.OpenRecordset(tdf.Name) ' OPEN TABLE
If Err.Number <> 0 Then ' COULD NOT OPEN TABLE
On Error Goto 0
Relink_Tables = True
'GoTo Relink_Tables ' RECONNECT TO APPROPIATE DATABASE
Else
On Error Goto 0
rsCheckLink.Close ' CLOSE TABLE THAT DID OPEN
Set rsCheckLink = Nothing
End If
End If
Next
如果问题仍然存在,请使用:How to debug VBA code