6

同じ Access DB 内の異なるクエリへの 2 つのデータ接続があります。2 番目のものは常に失敗します (どちらを最初に実行したかに関係なく)。

データベースを見ると、問題の原因と思われるロック ファイルがあることに気付きました。Excelファイルを閉じるまでロックされたままです。インポートが完了したらすぐにデータベースのロックを解除するのを手伝ってくれる人はいますか?


追加情報:

エクセルとアクセス2010を使用しています。

エラー:

「テキスト ファイル仕様 ' MyQueryリンク仕様' は存在しません。仕様を使用してインポート、エクスポート、またはリンクすることはできません。」

接続文字列(注:私は Command type: Table を使用しています):

Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin
;Data Source=A:\folder\folder\My Database.accdb
;Mode=Share Deny None
;Extended Properties=""
;Jet OLEDB:System database=""
;Jet OLEDB:Registry Path=""
;Jet OLEDB:Engine Type=6
;Jet OLEDB:Database Locking Mode=0
;Jet OLEDB:Global Partial Bulk Ops=2
;Jet OLEDB:Global Bulk Transactions=1
;Jet OLEDB:New Database Password=""
;Jet OLEDB:Create System Database=False
;Jet OLEDB:Encrypt Database=False
;Jet OLEDB:Don't Copy Locale on Compact=False
;Jet OLEDB:Compact Without Replica Repair=False
;Jet OLEDB:SFP=False
;Jet OLEDB:Support Complex Data=False
;Jet OLEDB:Bypass UserInfo Validation=False

最後に、この投稿に基づいて、モードを「共有拒否なし」から「読み取り」に変更しようとしましたが、役に立ちませんでした。なぜそうなるのかもわかりませんが、試してみました。

編集:この問題の調査を続けましたが、解決策が見つかりません。それ以来、接続文字列に追加のステートメントを追加しようとしましたReadOnly = Trueが、うまくいきませんでした。

4

4 に答える 4

7

データ接続に関する別の問題に直面しましたが、その解決策は実際にこの長年の問題も修正することになりました!

私の推測では、秘密は「MaintainConnection = False」にあります。

Dim i As Integer
Dim awc As WorkbookConnection
Dim c As OLEDBConnection

For i = 0 to ActiveWorkbook.Connections.Count
    Set awc = ActiveWorkbook.Connections.Item(i)
    Set c = awc.OLEDBConnection
    c.EnableRefresh = True
    c.BackgroundQuery = False
    c.Reconnect
    c.Refresh
    c.MaintainConnection = False
Next i
于 2014-05-30T13:26:49.347 に答える