Switch関数を使いこなす【Access】

こんにちは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関数を使ったほうが分かりやすくて優しいかもしれないです。

 

参考になれば幸いです。

>ちょっとした悩みを解決        

ちょっとした悩みを解決        



「こういう内容を記事に残してほしい」「これってどうやるの」等、意見・要望があればご連絡ください。
ちょっとでもお役に立てるブログにしていきたいなと思っております。
よろしくお願いいたします。