ここから本文です

フォームのテキストボックスが空白もしくはnull値であった場合はクエリで全件抽出...

dok********さん

2012/3/611:07:18

フォームのテキストボックスが空白もしくはnull値であった場合はクエリで全件抽出する方法

フォームにデータを入力しボタンを押すと該当データを抽出するクエリを作成
しましたが、空白であった場合、全件抽出したいのですが良い方法はないでしょうか?。
クエリの抽出条件に入れる条件をいろいろ試しましたがうまく抽出できません。
よろしくお願いいたします。

フォームのテキストボックスの書式及びクエリ抽出項目の書式は日付(S)です。

閲覧数:
50,432
回答数:
2
お礼:
50枚

違反報告

ベストアンサーに選ばれた回答

lll********さん

編集あり2012/3/616:02:02

現在クエリの抽出条件にフォームのコントロール名を入れた形で抽出を行っているのでしょうか?
それともフィルターを使用されていますか?


●クエリの抽出条件にフォームのコントロール名を入れて抽出を行っている場合

現在、クエリの当該フィールドの抽出条件に以下のように記述していると思います。
[forms]![フォーム名]![テキストボックス名]

その一段下に以下のように記述します。
[forms]![フォーム名]![テキストボックス名] Is Null

※複数条件の場合や他の条件も組みあわせて抽出している場合は、条件の「組み合わせ」を考えて抽出条件を入れていきますので、その場合は項目数と併せて補足してください。




なぜこうなるのか説明します。

クエリの抽出条件は同じ行に記載すれば「and(かつ)」となり、行をずらせば「or(又は)」を意味します。
上記の抽出条件は、「当該フィールドがフォームのコントロール値と一致するレコード又はフォームのコントロール値がNULL」となり、後半の「フォームのコントロール値がNULL」はコントロール値がNULLの場合は全件出力されるという意味になります。

後半がわかりにくいですね。
わかりやすくいうと、「条件1又は条件2」は、どちらかの条件が一致すればレコードは抽出対象です。
レコード1件ずつ条件に当てはまるか検査していき、どちらかの条件に当てはまれば抽出されるわけですが、後半の条件は「フォームのコントロール値がNULL」であり、レコードがどんな値でもコントロール値がNULLであれば「当てはまった」と判断され抽出対象となるのです。

余談ですが、クエリを保存して再度開くと違う形に修正されています。
新しいフィールドが追加され、フィールドには「[forms]![フォーム名]![テキストボックス名]」、抽出条件には「Is Null」です。
これは修正される前と同じことを意味します。





●フィルターの場合
With Me
If IsNull(.テキストボックス名) Then
.Filter = ""
.Filter = False
Else
.Filter = "[フィールド名]=#" & .テキストボックス名 & "#"
.FilterOn = True
End If
End With

となります。

この回答は投票によってベストアンサーに選ばれました!

ベストアンサー以外の回答

1〜1件/1件中

nii********さん

2012/3/611:44:35

A案===========================
VBAを使わない方法。
ちょっと邪道ですが簡単な方法です。

抽出用のテキストボックス名を仮に[抽出テキスト]として
新たに、テキストボックス1とテキストボックス2を非表示で作成し、
それぞれのコントロールソースの計算式を

テキストボックス1:=IIF(IsNull([抽出テキスト]),#1950/01/01#.[抽出テキスト])
テキストボックス2:=IIF(IsNull([抽出テキスト]),#2030/12/31#.[抽出テキスト])

として、フォームのクエリの抽出条件を
>=[テキストボックス1] And <=[テキストボックス2]
にすると
[抽出テキスト]がNullの時は1950/01/01~2030/12/31が表示されます。
ただし、この方法ではNULLが表示されません。

B案===========================
VBAを使うのであれば、
フォームのFilterを使ってもっと簡単にできます。

抽出テキストの更新後処理

Me.Filter=""
if(Not IsNull(Me.抽出テキスト))Then
Me.Filter="抽出日付=#" & Me.抽出テキスト & "#"
Endif
Me.FilterOn=True

ためしていませんが、
適宜ご変更してやってみてください。

あわせて知りたい

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる