转换为ACCDB后,Access 2013链接到SQL表失败

转换为ACCDB后,Access 2013链接到SQL表失败,sql,ms-access,Sql,Ms Access,我有一个旧的Access数据库,目前是2000-2003.MDB格式。转换为.ACCDB后,以下代码无法附加SQL server表。当通过代码重新附加SQL表时,我得到以下错误:对象无效或不再设置。它在cat.Tables.Append tbl行失败。 它可以在Access 2013中运行.MDB格式的数据库,但在转换为2007格式后失败。我知道我可以将其保留为MDB文件,但我希望将其向上转换以避免将来出现问题。我在没有帮助的情况下尝试了不同的连接字符串设置 缩写代码: Dim tbl As N

我有一个旧的Access数据库,目前是2000-2003.MDB格式。转换为.ACCDB后,以下代码无法附加SQL server表。当通过代码重新附加SQL表时,我得到以下错误:对象无效或不再设置。它在cat.Tables.Append tbl行失败。 它可以在Access 2013中运行.MDB格式的数据库,但在转换为2007格式后失败。我知道我可以将其保留为MDB文件,但我希望将其向上转换以避免将来出现问题。我在没有帮助的情况下尝试了不同的连接字符串设置

缩写代码:

Dim tbl As New ADOX.Table, cat As New ADOX.Catalog
Dim cnn As New ADODB.Connection
Dim ProviderString As String

Set cat.ActiveConnection = CurrentProject.Connection    
ProviderString = "ODBC;" & _
    "Provider=SQLOLEDB;" & _
    "Driver=SQL Server;" & _
    "Server=" & sServerName & ";" & _
    "database=" & sDatabaseName & ";" & _
    "UID=" & gbldbLogin & ";" & _
    "PWD=" & gbldbPassword

    TableName = "MyTableName"

    DoCmd.DeleteObject acTable, TableName

    tbl.Name = TableName
    Set tbl.ParentCatalog = cat
    tbl.Properties("Jet OLEDB:Link Provider String") = ProviderString
    tbl.Properties("Jet OLEDB:Remote Table Name") = TableName
    tbl.Properties("Jet OLEDB:Create Link") = True
    tbl.Properties("Jet OLEDB:Cache Link Name/Password") = True
    cat.Tables.Append tbl
    Set tbl = Nothing

在Access 2013中,这对我来说非常有效。也许你可以尝试一个新的数据库?