見出し画像

Access IIf関数 フォームとの連携 チェックボックスの有無で抽出条件設定

ある、販売データから、抽出条件を単選択したり、複数選択したりしたい場合があるとします。

クエリで毎回、抽出条件を書き直すのは面倒なので、フォームのチェックボックスを使用して表したいと思います。

例として、以下のテーブル SupermarketReceiptでフィールドpos_large_class_nameの種類に応じて抽出条件を変えたい場合、まずフォームにそれぞれの種類のチェックボックスを作成します。

テーブル 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 の抽出条件 式ビルダー表示

例えば、米と鮮魚だけチェックをして、選択クエリを開いたら、チェックした内容に応じたフィールド pos_large_class_nameの抽出条件で選択クエリを表示することができるようになりました。複数選択も可能です。

フィールドpos_large_class_nameのチェックボックス フォーム(米/鮮魚 チェック)
pos_large_class_nameで米と鮮魚のみが表示されたクエリ

余談ですが、選択クエリを開くのもフォーム内で完結したい場合は、フォームにボタンを設置して、ボタンを押すとクエリが開くようにモジュールを設定したら良いと思います。

IIf関数
式の評価によって、2 つの値のいずれか 1 つを返します。

IIf は 、式 を使用できる場所ならどこでも使用できます。 IIf を使用して、別の式が True か False か判断します。 式が true の場合 、IIf は 1 つの値を返します。false の場合 、IIf は別の 値を返します。 IIf が返す 値を 指定します。

Microsoftサポート

いいなと思ったら応援しよう!