Google検索

リンクユニット

Windows8 & Office2013 Access2013

フィルターの空白を含む複数選択で抽出数が異なる

投稿日: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のフォームでフィルターを実行した後、そのフィルターのデータをそのままレポートへ出力する方法です。 分割フォームの作成 テーブルや ...

続きを見る

おすすめ記事と広告

-Windows8 & Office2013 Access2013

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

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