#693 | オプショングループに抽出と”すべて”ボタンによる解除機能を設けるには? | フォーム、VBA | |||||||||||||||||||||||||||||||||
メインフォームにあるテキストボックスに入力された値を条件にサブフォームのレコードを抽出したり、コンボボックスで選択されたリスト項目を条件に抽出したりといった画面はよく使われます。同様に、メインフォームにオプショングループコントロールを配置し、その中にある複数のトグルボタンの選択に応じて抽出することもよくあります。 ここでは、トグルボタンによって抽出する画面において、”すべて”を表示する、すなわち抽出を解除して全レコードを表示するトグルボタンを配置したフォームおよびそのプログラム例を紹介します。 まず、下図のようなフォームを作成します。 ここで、各コントロール名や、トグルボタンの「オプション値」プロパティは下表のようになっているとします。
ここでは、オプショングループ「fra抽出商品区分」で選択されたトグルボタンが切り替わった時、サブフォームの全レコードの中から当該商品区分だけを抽出するものとします。そして[すべて]で抽出解除するものとします。 「fra抽出商品区分」の中のトグルボタンが切り替わると「AfterUpdate/更新後処理」イベントが発生しますので、そのイベントプロシージャに下記のようなコードを記述します。 Private Sub fra抽出商品区分_AfterUpdate() '[商品区分で抽出]オプショングループの更新後処理 Dim strKubun As String 'オプション値から抽出条件を設定 strKubun = Choose(Me!fra抽出商品区分, "", "A区分", "B区分", "C区分", "D区分") 'サブフォームのフィルタを設定 With Me!frm商品マスタ区分別_sub.Form If strKubun <> "" Then '商品区分でフィルタを掛ける .Filter = "商品区分 = '" & strKubun & "'" .FilterOn = True Else 'フィルタを解除する .Filter = "" .FilterOn = False End If End With End Sub [すべて]のトグルボタンが選択されると、「fra抽出商品区分」の値はそのオプション値である「1」となります。よってここでは『それが1のときは変数strKubunを””とし、かつその場合はサブフォームの「FilterOn」プロパティを「False」とする』ことでFilterを解除、すわなち抽出を解除して全レコード表示を行っています。 また、フォームにフィルタを掛ける「Filter」や「FilterOn」などのプロパティは、”サブフォームコントロール”のプロパティではなく、”サブフォームコントロールのソースオブジェクトとなっているフォーム”のプロパティです。よって「Me!frm商品マスタ区分別_sub.Form」のように、サブフォームコントロール名の最後に「.Form」を付けることに注意してください。 なお、「.Filter = ""」という命令は必須ではありません。ただ、「この画面で抽出されたデータだけを印刷したい」といったようなとき、サブフォームの「Filter」プロパティ値をレポートに渡して処理するといったこともありますので、念のためクリアしておくものとしています。 実行例:
|
|||||||||||||||||||||||||||||||||||
|
Copyright © T'sWare All rights reserved |