- ベストアンサー
Access2000について
Accessでの質問です。(排他処理について) フォームにとあるテーブル(リンクテーブルを使用 しています)のデータを一覧表示させています。 一覧表示させるテーブルの項目にはチェックボックスの 項目があり、フォーム上でそのチェックボックスを クリックして「削除」ボタンをクリックすると、 チェックがついたものだけをフィルタをかけて 表示させたあとで、モジュール内でそのチェックのついた データを削除する処理をしています。 このフォームを複数ユーザーで使用します。 それぞれのマシンごとにmdbはコピーして使うのですが、 リンクテーブル先は同じです。 (1)のマシンにてフォーム上でチェックボックスにチェックをつけ、「削除」ボタンはクリックしないまま、 そのままにしておいて、 (2)のマシンにて同じデータにチェックを付け、 「削除」ボタンクリックにてそのデータを削除したあと、 (1)のマシンにて「削除」ボタンをクリックすると、 (1)のマシンのmdbが異常終了してしまいます。 どうやら(1)のマシンが削除させようとして フィルターをかける時点で、既に(2)のマシンによって そのデータはテーブルから削除されているので 異常終了しているみたいです。 これを異常終了させないようにするには どうしたらいいのでしょうか? わかりづらい文章になってしまってすみません。 どうかアドバイスを宜しくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
Accessは全く分からないので、 的をはずしたコメントになりましたら ご容赦下さい。 > On Error時のエラーメッセージをMsgboxで 表示しようとした瞬間に異常終了してしまうのです。 このような状況ですと、異常終了を回避するには、 原因をはっきりとさせて、それに対する対策を とるような方針になるのではないでしょうか? >そのデータはテーブルから削除されているので、異常終了しているみたいです。 と、原因が特定できているようですよね!? 例えば、削除ボタンを押された後に、 削除処理が走る前に、データ削除されているかどうか を判断させ、削除されているのであれば、何か、 特殊な処理をさせるようなことをすれば良いのではないでしょうか? 例えば、その処理とは、てきとうなデータを削除の 直前に入れてあげるとか・・・。 削除するんだから、なんでも良いですよね?データは・・。 これは、1例です。あと、いろいろ細かな仕様で、 そんな処理じゃ駄目だというお話もあるでしょう~。 こういう方法も検討してみてはいかがでしょうか? ということで・・。
その他の回答 (1)
- cafedemocha
- ベストアンサー率29% (232/789)
排他設定でなければいけないんでしょうか? 排他である以上、データソースを何処かで開いている時に、別のマシンからアクセスすれば、それは、排除すべきアクセスとみなされるのは当然ですから、異常終了しても、おかしくは無い筈です 一度、共有設定に変えて、試されてみては如何ですか?
補足
ありがとうございます。 mdbは共有モードにしているのですが、 うまくいきません。 せめてエラーメッセージを表示して 処理をとめるようなことができたらいいのですが、 On Error時のエラーメッセージをMsgboxで 表示しようとした瞬間に異常終了してしまうのです。 何かいい方法はないものでしょうか?
お礼
ありがとうございます。 他の方法を検討してみることにします。