将DAO转换为ADO

时间:2010-06-17 13:59:31

标签: ms-access ado access-vba dao

我正在使用具有使用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

我不确定的部分是如何遍历表并获取/设置它们的连接字符串。

2 个答案:

答案 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常量,您的代码必须使用常量值而不是名称。