以下代码更新了我的表和选定后端之间的链接。我确认在运行代码时更新适用于所有表。但是,成功更新链接后,执行将中断,并且不会显示错误消息。后面的MsgBox (TableLinked)
不会执行。
当初始If
语句求值为False
时,MsgBox (TableLinked)
被执行,这告诉我循环中有挂起。
关于这里发生了什么的任何想法?
If Not GetBackend = "" Then
For i = 0 To Db.TableDefs.Count
If Not Db.TableDefs(i).Connect = "" Then
Db.TableDefs(i).Connect = ";DATABASE=" & GetBackend
Db.TableDefs(i).RefreshLink
TableLinked = True
End If
Next i
Else
TableLinked = False
End If
MsgBox (TableLinked)
修改
好吧,我会假设我的下标超出了范围(尽管如果是这样,它就会无声地失败)。当我在第2行For i = 0 To Db.TableDefs.Count - 1
中执行此操作时,我的代码在循环之后继续存在。其他人有过这种情况吗?我的解决方案仍然没有回答我的问题,因为我仍然不确定是什么打破了代码。
答案 0 :(得分:3)
TableDefs集合的成员项从零开始编号。这意味着最后一个项目的索引号比项目数少一个。坦率地说,我不明白为什么你的代码没有抛出错误#3265,"此集合中找不到项目" ...因为相当于TableDefs(TableDefs.Count)
尝试引用不存在的TableDef
。
像这样修改你的代码......
'For i = 0 To Db.TableDefs.Count
Dim lngLastItem As Long
lngLastItem = (Db.TableDefs.Count - 1)
For i = 0 To lngLastItem
If Not Db.TableDefs(i).Connect = "" Then
' and the rest ...