Access (VBA)

Access VBAに関するフォーラムです。
  • 掲示板への投稿には会員登録(無料)が必要です。会員登録がまだの方はこちら
  • 掲示板ご利用上のお願い」に反するご記入はご遠慮ください。
  • Q&A掲示板の使い方はこちらをご覧ください
トピックに返信
質問

 
(Windows 10 Home : Access 2021)
【続】エラー3211 現在他のユーザーまたはプロセスで使用されているので、ロックできませんでした。
投稿日時: 23/07/31 02:28:50
投稿者: ぬー

 7/24の質問で解決策をご教示いただきありがとうございました。
質問自体初めてで不慣れなため、解決登録したらコメントできないにもかかわらず更問を入れてしまっておりました。
 先の質問の解決策で、テーブルを集合値ソースとするリストボックスやコンボボックスの参照を解除するための一般的な方法を探していました。もしご存じの方がいらっしゃればご教示いただけると助かります。

回答
投稿日時: 23/07/31 09:55:16
投稿者: sk

引用:
テーブルを集合値ソースとするリストボックスや
コンボボックスの参照を解除するための一般的な方法

まず前回のスレッドにおける解決策の 1 つとして、
「テーブル作成クエリを使用しない」ということが
挙げられます。
 
引用:
7/24の質問

https://www.moug.net/faq/viewtopic.php?t=82373
 
引用:
main_Data_tblとShop_tblを店舗名で内部結合した
新しいテーブル(main_DataPls_tbl)を作るクエリ
(Q_make_main_DataPls)を作成

引用:
エラーはDoCmd.OpenQuery "Q_make_main_dataPls"の行でおきており

・テーブル作成クエリを DoCmd.OpenQuery メソッドによって実行する際、
 もしそのクエリによって作成しようとしているテーブルと同じ名前を持つ
 既存のテーブルが存在していた場合、Access は先に既存のテーブルを
 (全てのレコードのみならず、その定義ごと)削除しようとする。
 
引用:
使い勝手がよかったので抽出結果を
   リストボックス.Rowsource="SELECT * FROM main_DataPls_tbl WHERE 検索条件"
でフォーム上のリストボックスに表示させていました。

・しかし、既に何らかの形で(この場合はリストボックスの値集合ソースとして)
 開かれているテーブルの定義を変更/削除することは出来ない。
 
引用:
エラー3211 現在他のユーザーまたはプロセスで使用されているので、ロックできませんでした。

・したがって、そのテーブル作成クエリを実行することは出来ず、
 それを呼び出そうとした DoCmd.OpenQuery メソッドは失敗する。
 
ただレコードの入れ替えが出来ればよいのであって、
テーブルの定義そのものを削除する必要がないのであれば、
テーブル作成クエリではなく、削除クエリと追加クエリを
使用なさればよろしいでしょう。

トピックに返信