こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

-広告-

解決済みの質問

データの競合?回避する方法は?

オフィス2010です。
一つのアクセスファイル(test.accdb)に対して
test.accdb自身も自分のファイルの中のテーブルにADOで操作し
エクセルからもtest.accdbに対してADOで操作をしています。

rs.Open "SELECT * FROM T", cn, adOpenStatic, adLockPessimistic
rs.Filter = "番号 = " & 番号
rs("文") = str文

で発生します。

そのすると
画像の様に
実行時エラー -2147217887(80040e21)
「他のユーザーが同じデータに対して同時に変更を試みているのでプロセスが停止しました」
が発生します。
エクセル側で発生します。

このエラーが出て中断したvbaを再度実行すると
エラーのコードは同じですが
エラーの内容が
「UpdateまたはCancelUpdateメソッドには、
対応すうAddNewまたはEditメソッドが必要です。」
に変わります。

https://support.microsoft.com/ja-jp/kb/966148
これと同じエラーの番号ですが、現象を読むと
「このエラーは FRx レポート サーバーにレポートの生成時に発生します。」
と書いてありますが、
「FRx レポート サーバーにレポートの生成時」に該当してないように感じます。

原因の「地域設定短い日付形式がエラーを引き起こしています。」に関しても
単独でそれぞれVBAを実行する限りではエラーが発生しない為
これも違うと思います。

SQLServerは一切使っていません。

投稿日時 - 2016-01-05 22:25:44

QNo.9106705

困ってます

質問者が選んだベストアンサー

同じデータを2カ所以上から更新しようとしたり、ロックしたりしようとすると、質問者さんが見たようなエラーメッセージが発生します。
回避するには、エラーが出たほうのプログラムは、処理を諦めるか、処理を進める前に、自分が使いたいデータをすべてロックし、他のプログラムから使えないようにブロックする処理を追加することになると思います。
当然ながら、もう1つのプログラムは処理ができなくなりますけどね。

まあ、1つしかないおもちゃを2人の子供が同時に「それで遊びたい!」と言い出したら、ケンカになるのと同じですね。

投稿日時 - 2016-01-05 22:37:46

お礼

ありがとうございました。

投稿日時 - 2016-01-12 23:01:16

ANo.1

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

-広告-
-広告-

回答(1)

-広告-
-広告-

あなたにオススメの質問

-広告-
-広告-