Windows8 & Office2013 Access2013

Print Friendly, PDF & Email

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

投稿日:2017年1月7日 更新日:

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ファイルに変換するときは、データ型のフィールドプロパティまで、しっかり確認しないといけませんね。

関連分割フォームのデータシートビューにあるプルダウンで抽出したデータをそのままレポートへ出力することができます。
フォームのフィルター実行後のデータをレポートへ

フォームのフィルター実行後のデータをレポートへ

Accessのフォームでフィルターを実行した後、そのフィルターのデータをそのままレポートへ出力する方法です。 分割フォームの作成 テーブルや ...

続きを見る

解決できないことは【teratail】に質問してみましょう。

参考Officeのバージョンによって操作が異なる場合があります。以下の記事で、お使いのOfficeのバージョンを確認する方法を解説しています。

Office(Word、Excel、PowerPointなど)のバージョンを確認する方法

Microsoft Officeも時を得て、大きく様変わりしてきました。トラブルを解決しようとするとき、あるいは、何かの操作を探すときなど、 ...

続きを見る

おすすめ記事と広告

関連記事

バージョン情報の確認

Office2013のバージョンを確認する方法です。Office2010の時と異なるため、戸惑われる方も多いようです。 Wordで解説します ...

一時的に送受信を停止する

Outlook2013で一時的に予定された送受信を停止する方法です。 予定された送受信を無効にする [送受信]タブにある[送受信]グループの ...

ヘッダー/フッターにファイルのパスを表示(Word2013)

Word2013では、ヘッダー/フッターにファイルのパスを挿入するのが簡単になりました。 Word2007、Word2010での方法はヘッダ ...

チェックボックスを使って自動集計

Excelで下のようにチェックボックスを使用してチェックした個数と価格の合計を求める方法を紹介します。 開発タブの表示 事前準備として、まず ...

添付ファイル型のフィールド名変更

Access2007からデータ型に[添付ファイル]が登場しました。 データ型に添付ファイル この添付ファイル型のフィールド名はデザインビュー ...

-Windows8 & Office2013 Access2013

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

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