1

現在 2000 ~ 2003 の .MDB 形式の古い Access dB があります。.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
4

0 に答える 0