7/01/2021

Access。多分岐判定処理なら、Iif関数よりもSwitch関数のほうが楽かもしれません。【Switch】

Access。多分岐判定処理なら、Iif関数よりもSwitch関数のほうが楽かもしれません。

<Access:Switch関数>

テーブルに店舗NOフィールドがあって、その左から2文字が地域を表していますが、わかりにくいので、地域名というフィールドのあるクエリを作ることにしました。


店舗NOフィールドの左から2文字が、「KS」ならば、関西。

「KT」ならば、関東。

そして、「TK」は、東京を表しています。


最終的に作りたいのが次のクエリです。


地区名フィールドを加えたクエリをつくるわけですが、今回のように、条件分岐が3つにわかれた多分岐になっています。


Iif関数をネストして、Iif+Iif関数とすれば、三分岐することは、可能といえば可能ですが、今回はたまたま、3つにわかれるだけで、例えば、九州に出店して、”KS”なんていうのが登場したら、Iif+Iif+Iff関数となってしまい、とても煩雑になってしまいます。


そこで、多分岐の場合は、Switch関数をつかうことで、わかりやすい演算フィールドをつくることができます。


なお、Excelには、Office365のExcel2016から「SWITCH関数」が追加されました。


それでは、クエリを作っていきましょう。


作成タブにある「クエリデザイン」をクリックします。


今回は、テーブルのすべてのフィールドを使います。


そして、地域名の演算フィールドですが、左から2文字が判断になっていますので、Left関数を使う必要がありますので、演算フィールドが、ちょっと長くなります。

ズームをつかって作ってもいいかと思います。


作成する演算フィールドは、

地区名: Switch(Left([店舗NO],2)="TK","東京",Left([店舗NO],2)="KT","関東",Left([店舗NO],2)="KS","関西")


Left([店舗NO],2)="TK" は、店舗NOフィールドの左から、2文字がTKだったらという意味になります。


このように多分岐させたい時の演算フィールドは、Switch関数を使うと簡単に設定することができます。


なお、こんなに長い演算フィールドを入力して作成するのなら、SQLでつくっても大差がないと思われますので、SQLでつくると、次のようになります。


SELECT T店舗地区名簿.店舗NO, T店舗地区名簿.店舗名, Switch(Left([店舗NO],2)="TK","東京",Left([店舗NO],2)="KT","関東",Left([店舗NO],2)="KS","関西") AS 地区名 FROM T店舗地区名簿;


Accessにも色々関数が用意されていますので、使ってみると意外と使えるものが見つかるかもしれませんので、試してみるといいかもしれませんね。