新生活を充実させるための「こだわり」を取材!!

下記のテーブルがある場合、下記のクエリを実行すると、下記のような結果になります。

条件1. [Forms]![F_Form]![name]に「ル」と入力
→「ベルト」のレコードを抽出

条件2. [Forms]![F_Form]![name]に何も入力しない。
→「ベルト」「ニット」「ズボン」のレコードを抽出


【クエリ】
SELECT *
FROM TBL
WHERE (((TBL.NAME) Like IIf(Nz([Forms]![F_Form]![name])='','*','*'+Nz([Forms]![F_Form]![name])+'*')));


【テーブル(TBL)の中身】
ID NAME
1 ベルト
2 ニット
3 
4 ズボン


条件1は意図した動作となっていますが、
条件2は意図した動作をしませんでした。

条件2の場合、全件ヒットしたいと思います。
ただ、上記のクエリではNAME列に値が入っていないID=3の値が抽出できませんでした。

その為、条件2の場合、全件ヒットするクエリの書き方をご存知の方がいらっしゃいましたら、
ご教示いただければと思います。

よろしくお願いします。

教えて!goo グレード

A 回答 (3件)

【テーブル(TBL)の中身】のID=3のとき、TBL.NAMEがNullなのでヒットしない。



【クエリ】のWhere条件左辺をひねってみては?

WHERE (((Nz(TBL.NAME)) Like IIf(Nz([Forms]![F_Form]![name])='','*','*'+Nz([Forms]![F_Form]![name])+'*')));
    • good
    • 2
この回答へのお礼

ご回答ありがとうございます。
教えていただいたSQL文で意図した動作となりました。

また、何故ヒットしないかご教示いただきありがとうございました。
右辺だけでなく、左辺にもNzをつければ良かったんですね。

このたびはどうもありがとうございました。

お礼日時:2009/10/02 08:53

以下はフォームでの Filter 設定でのものになりますが、クエリの WHERE でも同じです。



http://oshiete1.goo.ne.jp/qa5180535.html

一連の流れが参考になればと

※ 当該個所以外についても参考になるかと、
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
ご提示いただいたURLを参考にさせていただきたいと思います。

このたびはどうもありがとうございました。

お礼日時:2009/10/02 08:54

下記のsqlを試してみてください。



SELECT *
FROM TBL
WHERE (((IIf(IsNull([Forms]![F_FORM]![NAME]),True,[NAME] Like "*" & [Forms]![F_FORM]![NAME] & "*"))=True));
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
教えていただいたSQL文で意図した動作となりました。

このたびはどうもありがとうございました。

お礼日時:2009/10/02 08:53

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

教えて!goo グレード

このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング