我正在使用具有使用DAO代码的子例程的Access 2003数据库。此代码循环遍历表定义并刷新ODBC连接字符串。我想将其转换为ADO,因此我不必引用DAO对象库。这是代码......
Public Sub RefreshODBCLinks(newConnectionString As String)
Dim db As DAO.Database
Dim tb As DAO.TableDef
Set db = CurrentDb
For Each tb In db.TableDefs
If Left(tb.Connect, 4) = "ODBC" Then
tb.Connect = newConnectionString
tb.RefreshLink
Debug.Print "Refreshed ODBC table " & tb.Name
End If
Next tb
Set db = Nothing
MsgBox "New connection string is " & newConnectionString, vbOKOnly, "ODBC Links refreshed"
End Sub
我不确定的部分是如何遍历表并获取/设置它们的连接字符串。
答案 0 :(得分:4)
DAO真的是最好的,你不能用ADO刷新链接,而是你需要使用ADOX(一些相关的代码here)。
您可以通过Jet OLEDB:Link Provider String
答案 1 :(得分:2)
如果避免使用DAO参考是您的目标,您可以修改现有过程以使用DAO的后期绑定。例如,此子应该没有DAO的参考集。
Public Sub DAO_without_reference()
Dim db As Object
Dim td As Object
Set db = CurrentDb
For Each td In db.TableDefs
Debug.Print td.Name
Next td
Set db = Nothing
End Sub
在编写代码时,您不会使用Intellisense来帮助您处理DAO属性,方法和常量,但代码仍可以使用后期绑定。
如果您决定避免使用DAO参考,我认为这将是您最简单的选择。但是,我从未开发过没有DAO参考的Access项目,我不明白为什么你反对添加它。
编辑:此外,如果您使用后期绑定和任何DAO常量,您的代码必须使用常量值而不是名称。