Access。クエリで「~かつ~」というAND条件の判定をしたいけど、どうしたらいいの?
<Access>
店舗管理しているテーブルがあります。
該当するデータがあるのかないのかを判断した結果を表示するクエリを作りたいとします。
そして、その条件というのが、「新宿店」でかつ「売上高が1000以上」だとします。
結果としては、次のクエリを作りたいわけです。
判定という演算フィールドをつくり、「新宿店」でかつ「売上高が1000以上」という条件に合致するものに「○」を表示してあるクエリです。
どのような演算フィールドをつくったらいいのか確認していきましょう。
では、作成タブのクエリデザインをつかって、クエリを作ります。
今回は、NOフィールドを除いたフィールドを使ってクエリをつくります。
判定フィールドの演算式は、
判定: IIf([店舗]="新宿" And [売上高]>=1000,"○","")
とすることで、対応することができます。
ところが、この演算式、ちょっと注意する必要があるのです。
それは、ExcelとAccessは違うということ。
計算式は、IF+ANDという仕組みは同じですが、引数が異なっている点がポイントです。
Excelで、IF+AND関数の数式をつくるとしたら、
=IF(AND(A1="新宿",B1>=1000),"○","")
というように、IF関数の引数として、AND関数をつかっています。
そのAND関数内に、条件を設定してきます。条件と条件の間は、「,(カンマ)」で区切っています。
ところが、考え方は同じなのですが、Accessは、Excelと異なっています。
というのもの、Accessには、ExcelのようなAND関数が用意されていないからです。
なので、条件と条件の間を「,(カンマ)」で区切るのではなく、区切りをAnd演算子として、演算式を作る必要があるのです。
要するに、
判定: IIf(And([店舗]="新宿",[売上高]>=1000),"○","")
という演算式だとAnd関数が存在していないため、エラーになってしまうということです。
ですから、
判定: IIf([店舗]="新宿" And [売上高]>=1000,"○","")
としているわけです。
ちなみに、ExcelのIF関数は、Accessにはなく、Accessでは、IIf関数となっています。
ご覧のように、やりたいことは見えていても、Excelと同じように演算式をつくると、エラーになることが多々見受けられますので、Accessでの演算フィールドをつくるときは、注意が必要というわけです。