[Accessマクロ] ダイアログモードで開いたフォームの再クエリが効かない対処法

[Accessマクロ] ダイアログモードで開いたフォームの再クエリが効かない対処法

アクセスマクロのメモ。ダイアログモードで開いたフォーム上のサブフォームに再クエリをかけるとき、対象が背後のフォームになっちゃって再クエリがかけられない! という状況にハマったので。


ざっくりな仕様

こういうテーブルがあったとして、

こういうフォームでサブフォーム内にテーブルを表示させるとします。上のボタンでテーブルに変更をかけるアクションをしたあと、このサブフォームには再クエリをかけてあげないと、変更された内容が反映できません。

こんな感じで。コントロールを指定しなければアクティブフォーム全体に再クエリがかかることになります。

ダイアログモードで再クエリが効かない現象

さて、じゃあ今度は別に「メニュー」となるフォームを作って、そこからさっきのフォームを開くとします。このとき、ウィンドウモードを「ダイアログ」にすること、私は結構あるんです。

こんな感じで、Accessのタブ内に並列に表示するんじゃなくて、ポップアップで表示されます。このモードだと、このウィンドウを閉じないと他の作業ができなくなるので、開きっぱなしにされることがないし、いろいろ便利で。

そしたらなんとびっくり、再クエリが効かないときが!!! 検証してみたものの、いつもじゃなくて何かのタイミングでアクティブフォームが裏に回っちゃってるときがあるみたいで…、、さて困った。

「オブジェクトの選択」で自分自身をアクティブに

いじくり倒したところ、再クエリの前に「オブジェクトの選択」を入れてアクティブにし直すのが有効みたいでした。「データベースウィンドウ内」というプロパティは「既に開いているオブジェクト」なので「いいえ」で良さそうです。

以上です! 「いつもじゃない」現象なのでググっても出てこないしで困りました…、誰の役にも立たないかもしれないけど一応書き残しておきます!!

公開日:2018/01/12

書籍を執筆しています。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

コメントは承認制ですので、反映までしばらくお待ち下さい。(稀にスパムの誤判定にて届かないこともあるようですので、必要な際はお問い合わせからお願い致します。)