Access

複数チェックボックスの組み合わせによって条件を分岐するスマートな方法

今回はAccessで複数(3つ)のチェックボックスのTrue/Falseの組み合わせによってデータの抽出条件を変えるプログラムを作成しました。

IF文やCASE文などでずらっと書くこともできますが、今回は選択状態を数字に換算することによって短いコードで記述することができました。

抽出条件(要件)

検索条件を入力する画面内に以下のような変化の状態を選択するチェックボックスを用意します。

枠囲みしていますがオプショングループでありません。それぞれが独立したチェックボックスです。(複数選択可)

複数のチェック

検索対象のデータは体重で、見ての通り増加にチェックがあれば体重増加者を抽出

変化なしにチェックがあれば体重に変化のない人を抽出。

減少にチェックがあれば体重が減少した人を抽出します。

簡単な実装方法

深く考えずに抽出条件を書くならば以下のように、各条件をOR句で連結する方法も可能です。

この書き方をすると、すべてにチェックがあったとき、以下のような条件文になってしまいます。

体重>0 OR 体重=0 OR 体重<0

これはもはや愚の骨頂です。

3つチェックは極端な例ですが2つチェックの場合も結構無駄です。本来『体重>=0』で済むべきところが以下のような記述になってしまいます。

体重>0 OR 体重=0

複数の選択値の組み合わせを数値に変換して条件記述

先ほどのプログラムはもう少し作りこんで条件分岐させてあげれば『体重>=0』のように記述することも可能ですが、かなりIF文のステップ数が多くなってしまって面倒でした。

そこで、もう少ししっかり考えることにします。

組み合わせによって指定したい条件は決まります。(組み合わせの数は8通りです)

増加 変化なし 減少 条件
指定不要
体重>=0
体重>0
体重<>0
体重<=0
体重=0
体重
指定不要

増加と変化なしと減少をそれぞれ、1、2、4の数字に置き換えて合計を計算してみます。

3つの組み合わせなので1・2・4を使って合算すれば必ずユニークな数字になります。

(ファイルのパーミッションはrwxを124で表しますよね。1,2,3では1と2が指定されたのか3が指定されたのか分かりませんね。)

 

<数字に変換して合算>
増加 変化なし 減少 合計
1 2 4 7
1 2 3
1 1
1 4 5
2 4 6
2 2
4 4
0

IF文ですべて記述しても良いのですが、ちょっと一捻りしたら楽しかったので共有します!

あとからコードを読む方の可読性を上げるためにもコメントはしっかり書いておきましょう。

ABOUT ME
アズビーパートナーズ
アズビーパートナーズ
プログラマーと社内SEとしての経験を活かして、 情報システム部門のご相談を承ります。 得意な分野はAccessによる短納期開発、 BIツール(QlikSense/QlikView)の開発です。 現在はCMSを利用したホームページの作成にも力を入れています。
今のスキルのままで大丈夫?

あなたのスキル。今のままで大丈夫ですか?

時代のニーズに合った開発スキルを身につけてあなたの価値を高めましょう。

\オンラインでも教室でも学べるおすすめのスクール/

TECH::CAMP(エンジニアスクール)

まずは基礎から・・・という方はProgateUdemyどっとインストールなどがおすすめ!

スキルアップについて詳しくはこちら