6/22/2018

Access。Yes/NO型で、YesをNoにするには更新クエリで簡単に変換できます。【YesNo】

Access。Yes/NO型で、YesをNoにするには更新クエリで簡単に変換できます。

<Access:Yes/No型>

次のようなテーブルがあります。

このテーブルにある、DMというフィールドは、Yes/No型になっています。

一応、デザインビューでも確認しておきましょう。

このYes/No型は、
チェックマークがついているのがYesでついてないのがNoという、
Accessではお馴染みのフィールドですね。

そこで、今回は、このチェックマークがついているものを、
ついていないように。
チェックマークがついていないものを、ついてあるように。
というように、

YesとNoを入れ替えたいけれど、どうやったらいいの?

ということを紹介していきます。

データの件数が少なければ、
自力でクリックしていけばいいかもしれませんが、
データの件数が多くなれば当然、面倒ですし、
ミスをする可能性も高くなります。

文字を変える場合なら、Replace関数など、
様々な方法がありますが、それも大変です。

そこで、Abs関数を使うことで、簡単に入れ替えることが出来ます。

クエリデザインで、すべてのフィールドを使用します。

そして、「選択クエリ」ではデータを入れ替える必要がありますので、
今回は、「更新クエリ」を使用します。

では、「選択クエリ」を「更新クエリ」に替えていきましょう。

クエリツールのデザインタブにある、「更新クエリ」をクリックします。

これで、「更新クエリ」に替わりました。

すると、『レコードの更新』を使えるようになりますので、
この『レコードの更新』にAbs関数を使った数式を設定していきます。

設定する数式は、
Abs([DM])-1
とします。

では、実行ボタンをクリックしましょう。

更新するメッセージが表示されますので、
「はい」をクリックして、テーブルを確認してみましょう。

DMフィールドのYesとNoが入れ替わったのが確認できます。

このようにAbs関数を使うことでYesとNoを入れ替えることが出来るのですが、
どうして出来るのかという説明をしましょう。

まずAccessのルールで、
Yesというのは、Trueとも表記できますし、
数値だと、-1(マイナス1)というように設定されています。

Noというのは、Falseでも表記されて、
数値にすると、0(ゼロ)というように設定されています。

ちなみに、Excelは、YesがTRUEで1(プラス1)。
NoがFALSEで0(ゼロ)と設定されています。

Noは同じですが、YesはAccessとExcelで異なっていますので注意が必要です。

この-1(マイナス1)を0(ゼロ)に替えたいわけです。
そこで登場するのが、絶対値を算出することが出来る、Abs関数。

Yesは-1なので、絶対値は1ですね。

そこから1を減算してあげるので、結果は0(ゼロ)と算出されます。

つまり、Noに替わるわけですね。

同じように、Noは0ですから、絶対値も0なので、
1を減算すれば-1(マイナス1)。

つまりYesになるので、YesとNoを入れ替えることが出来るのです。