Windows8 & Office2013 Access2013

フィルターの空白を含む複数選択で抽出数が違う

投稿日:

Access2007からの新機能だと思うですが、テーブルやデータシートビューでフィルターが使用できます。
Excelのフィルターと同じように操作できて重宝しているのですが、落とし穴があります。
苦々しく思うのですが、まずその現象を説明します。
Access2007もAccess2010も同じ現象です。ここでは、Access2013で解説します。

発端は、分割フォームのデータシートビューで、あるデータを抽出しようとしたのですが、[空白]のみを抽出した時の件数と、[空白]とその他の項目を1つ選択して抽出した時の件数が違う。[空白]のみを抽出すると10件なのに、他のデータと組み合わせて抽出すると8件になる。抽出されない空白があるのです。
これじゃ、データベースとして使えないですよね。空白が存在する他のフィールドも同じ現象でした。
ただ、この現象を再現しようとテーブルを作成し直してもなかなか同じ現象にならず、四苦八苦してしまいました。そして、やっと分かったことです。

下のようなテーブルがあります。[備考]フィールドには空白があります。フィルターは[すべて選択]されています。
テーブル
[備考]フィールドのデータ型は[短いテキスト]です。フィールドプロパティの[値要求]は[いいえ]、[空文字列の許可]は[はい]です。既定です。
フィールドプロパティ
[空白]のみを抽出するため、[空白]のチェックボックスのみをオンにして[OK]ボタンをクリックします。
空白選択

スポンサーリンク

抽出件数は5個ですね。OKです。
空白抽出
では、ここで、[空白]と[チェック済]のレコードを抽出するため、[空白]と[チェック済]のチェックボックスをオンにして[OK]ボタンをクリックします。
空白と他1つの選択
結果は、下のように3件となります。おかしいですよね?5件+1件で6件抽出されなければならないのに。
抽出結果
[空白]、[チェック要]、[チェック済]を抽出した状態です。[空白]はやはり2個しか抽出されません。
空白と他2つの抽出結果
ですが、たちが悪いことに選択数を[空白]を含めて4個にすると、この現象は出ません。
[空白]、[チェック要]、[チェック済]、[不具合あり]を選択すると、[空白]は5個抽出されます。
空白と他3つの抽出結果

分かったことです。
空白には[Null値]と[長さ0の文字列]があります。
Microsoftの解説ページをリンクしておきます。
Access の Null 値と、長さ 0 の文字列の違いについて

上記のテーブルでは№3と№4と№5が[長さ0の文字列]、№9と№10が[Null値]なのです。
[空白]のみを抽出する場合は、[Null値]と[長さ0の文字列]が抽出され、
他の項目と一緒に抽出する場合は、[長さ0の文字列]が抽出されないことがあるのです。

[値要求][いいえ]、[空文字列の許可][はい]としている場合、[Null値]と[長さ0の文字列]の両方が入力されます。長さ0の文字列を意図的に入力したつもりはないのですが、何かの拍子に[長さ0の文字列]になったのだと思います。

解決策です。
空白をすべてNull値にすれば、この現象は出ませんので、更新クエリを作成して[長さ0の文字列]を[Null]にします。
更新クエリ
また、フィールドプロパティで[空文字列の許可]を[いいえ]にしておくと、[長さ0の文字列]は入力されなくなります。
空文字列の許可の変更
Access2003の時の[テキスト型]の既定は、[値要求]は[いいえ]、[空文字列の許可]は[いいえ]だったような気がします。mdbファイルをaccdbファイルに変換するときは、データ型のフィールドプロパティまで、しっかり確認しないといけませんね。

トラブルをすぐに解決したいならteratail

お勧め記事と広告

関連記事

ヒントのスタイル

コマンドをポイント(マウスを合わせる)すると表示されるヒントですが、 便利だと思う方もいれば、邪魔だと思う方もいらっしゃるようです。 このヒ ...

ビューの切り替えができない

Access2013に限ったことではありませんが、ビューの切り替えができるフォームと出来ないフォームがあるんですが・・ との質問を受けること ...

Excelのデータをインポート

AccessにExcelのデータをインポートしてテーブルを作成する方法です。操作は簡単なのですが、なかなか思うように行かないこともあります。 ...

ワンクリックで行や列の挿入

Word2013では、ワンクリックで表の行や列の挿入ができるようになっています。 列を挿入したい位置の列の罫線にマウス合わせると[挿入]マー ...

長いパスでもクリックで開くには

Outlookのテキストメールで長いURLや、長いパスでもクリックで開く方法です。 [ファイル]タブをクリックして、[オプション]をクリック ...

-Windows8 & Office2013 Access2013

Copyright © 2001-2017 初心者のためのOffice講座 All Rights Reserved.

Copyright© 初心者のためのOffice講座 , 2017 AllRights Reserved Powered by AFFINGER4.