MS Access Tips/Sample and VBA and Blog customize etc...

帳票フォームの複数コンボボックスで絞り込み 改良版

以前のTips帳票フォームの複数コンボボックスで絞り込みで、入力済みデータで地方と県名を変更して、県名コンボボックスにフォーカスがある状態で、EscキーやCtrl+Zで入力を取り消したとき、県名コンボボックスのリストが取り消す前のままの更新されないという不具合があるとの報告がありましたので、それに対処しました。

不具合の再現アニメーション
FrmGroupCombobox2.gif

帳票フォームの複数コンボボックスで絞り込みを読んでない人はそれを先に読んでおいてください。

難易度:

対処法1

フォームの取り消し時イベントで、事前に県名コンボボックス以外にフォーカスを移動しておく。

他のコントロールにあれば、県名コンボボックスに移動したときに再クエリされリストも更新されます。
(Yahoo!知恵袋での kiku30246さん の回答を参考にしました。下記関連URL参照)

対処法2

フォーカスは移動したくない場合

取り消し時イベントをキャンセルして、Me.Undoコマンドで取り消して、その後、県名コンボボックスを再クエリしてリストを更新する。Me.Undoすると、Undoイベントを再帰呼び出ししてしまうので、イベントプロシージャの関連づけを解除しておいてから、Me.Undo する。

対処法3

Me.cbAreaID の値を OldValue に戻しておいてから、県名コンボボックスを再クエリしてリストを更新する。
(これも、Yahoo!知恵袋での kiku30246さん の回答そのままです。下記関連URL参照)
なるほどと思いました。これは思いつきませんでした。Access Club 超初心者 FORUMでの「フォームの取り消し処理を行った直後に処理を行いたいのですが・・・」という質問に引っ張られていたようです。

追記(05/06): kiku30246さんより、新規レコード時、地方名を選択せずに、いきなり都道府県を選択すると選択したのと異なる県名が表示される場合があるというバグのご指摘をいただきました。対応として、県名選択コンボボックスの更新後処理で、再クエリしてリストを更新するようにサンプルファイルを変更しました。

関連URL
Yahoo!知恵袋「フォームの取り消し処理を行った直後に、フォームの中にあるコンボボックスの内容...」
Access Club 超初心者 FORUM「フォームの取り消し処理を行った直後に処理を行いたいのですが・・・」

サンプルファイルが下記からダウンロードできます。
FrmGroupCombobox_kai_07.zip (Access 2007-2010 形式 - 32kb)
FrmGroupCombobox_kai.zip (Access 2002-2003 形式 - 28kb)
FrmGroupCombobox_kai_2k.zip (Access 2000 形式 - 28kb)


拍手する

Leave a reply






Trackbacks

trackback URL
http://hatenachips.blog34.fc2.com/tb.php/79-4fd9cb9d
該当の記事は見つかりませんでした。