こんにちはmasalifeです。
Accessの力を最大限に発揮させるためには、関数の知識が必要不可欠です。
僕が多くのシステム構築をしてきた経験から
この関数は覚えといた方がいい
というものを順に紹介していきたいと思います。
今回紹介するのは
Switch関数
です。
○○なら××、△△なら☆☆、■■なら♦♦
といったような
複数の条件で判断する
ときに役立つ関数です。
条件判断する時はIIf関数を用いるのが一般的ですが
複数の条件で判断する場合は
IIf関数を入れ子(ネスト)しなければいけなく
関数が複雑で分かりにくくなってしまいます。
やりたい事をしっかりと把握して使い分けてくださいね。
Switch関数とは??
microsoft-officeサポートでは次のように示されています。
【構文】
Switch ( expr-1, value-1[, expr-2, value-2 )… [, expr-n, value-n ])
引数 |
説明 |
---|---|
expr |
必須。 評価対象のバリアント型 (Variant) の式を指定します。 |
値 |
必須。 指定した式が真 (True) のときに返す値または式を指定します。 |
*microsoft-officeサポートより引用
expr-1の条件を満たす(真になる)ときに値(value-1)が返ってきます。
複数の条件を指定できる事も確認出来ます。
実際にクエリでやってみましょう。
クエリでの活用
値によってグループ分けする
職員名と勤務年数が格納されている【T_経験年数】があります。
*経験年数フィールドのデータ型は数値型にしています。
経験年数によって、次のようにグループ分けしてみましょう。
20年目以上→A
10年目以上19年目以下→B
9年目以下→C
クエリをデザインビューで開きます。
赤枠部分を入力します。
ポイントは
式は左から右に計算される
ことです。
まず、[経験年数]>=20を満たすかどうかを判断し
満たさない場合に、[経験年数]>=10の計算に移ります。
式は左から右に計算されることによって
10年目以上19年目以下
の式を指定する時に、[経験年数]>=10 And [経験年数]<=19
とする必要がありません。
[経験年数]>=20を満たさないという事は
19以下であることが確定するからです。
[経験年数]>=10と指定するだけで正しい結果が返ってきます。
クエリを実行して結果を確認してみましょう。
20年目以上→A
10年目以上19年目以下→B
9年目以下→C
正しく表示されていますね。
どの条件も満たさない場合に値を指定する
職員名と経験年数が格納されている【T_経験年数】を確認してみると
「如月 隆」の経験年数が空白となっています。
内容を確認してみると、どうやら「如月 隆」は新入社員ということです。
経験年数が空白は新入社員と表示してグループ分けしましょう。
20年目以上→A
10年目以上19年目以下→B
9年目以下→C
空白→新入社員
クエリをデザインビューで開きます。
赤枠部分を入力します。
ポイントは赤字の部分です。
左から右に計算し
どの条件も満たさなかった場合に(True)、新入社員(“新入社員”)
と表示されるように式を指定しています。
左から右に計算されるので、一番最後に式を指定することを覚えておいてください。
クエリを実行して結果を確認してみましょう。
新入社員と表示されていますね。
さいごに
Switch関数便利ですよね。
今まで僕が作ったシステムはIIf関数を複数入れ子にしているんで
メンテナンスする人は本当に大変だと思います。(ごめんなさい…)
IIf関数・Switch関数どちらを使うかは好みだと思いますが
作成者以外の人がメンテンスをする事を考えると
Switch関数を使ったほうが分かりやすくて優しいかもしれないです。
参考になれば幸いです。