Access IIf関数 フォームとの連携 チェックボックスの有無で抽出条件設定
ある、販売データから、抽出条件を単選択したり、複数選択したりしたい場合があるとします。
クエリで毎回、抽出条件を書き直すのは面倒なので、フォームのチェックボックスを使用して表したいと思います。
例として、以下のテーブル SupermarketReceiptでフィールドpos_large_class_nameの種類に応じて抽出条件を変えたい場合、まずフォームにそれぞれの種類のチェックボックスを作成します。
フォームチェックボックスのプロパティの名前はpos_large_class_nameの各名称と同じにしますが、見分けがつけば大丈夫です。
ここでは、チェックボックスのデフォルトをチェック状態とし、既定値をTrueにします。(既定値を設定しなくても大丈夫です)
そして、フォームのチェックボックスを抽出条件として参照するクエリを作成します。
(ここでは単純な選択クエリを例で作ります)
フィールド pos_large_class_nameの抽出条件には、IIf関数とOr演算子を組み合わせて、以下のように記載します。
IIf([Forms]![フォーム1]![米]=True,"米","") Or IIf([Forms]![フォーム1]![乳卵]=True,"乳卵","") Or IIf([Forms]![フォーム1]![惣菜]=True,"惣菜","") Or IIf([Forms]![フォーム1]![鮮魚]=True,"鮮魚","") Or IIf([Forms]![フォーム1]![青果]=True,"青果","") Or IIf([Forms]![フォーム1]![精肉]=True,"精肉","") Or IIf([Forms]![フォーム1]![その他]=True,"その他","")
例えば、米と鮮魚だけチェックをして、選択クエリを開いたら、チェックした内容に応じたフィールド pos_large_class_nameの抽出条件で選択クエリを表示することができるようになりました。複数選択も可能です。
余談ですが、選択クエリを開くのもフォーム内で完結したい場合は、フォームにボタンを設置して、ボタンを押すとクエリが開くようにモジュールを設定したら良いと思います。