我有一个旧的 Access dB,目前是 2000 - 2003 .MDB 格式。转换为 .ACCDB 后,以下代码无法附加 SQL 服务器表。通过代码重新附加 SQL 表时,我收到以下错误:对象无效或不再设置。它在cat.Tables.Append tbl行上失败。在 Access 2013 中运行 .MDB 格式 dB 可以正常工作,但在转换为 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