- ベストアンサー
【Access】条件未入力時、全件ヒットするクエリについて
下記のテーブルがある場合、下記のクエリを実行すると、下記のような結果になります。 条件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の場合、全件ヒットするクエリの書き方をご存知の方がいらっしゃいましたら、 ご教示いただければと思います。 よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
【テーブル(TBL)の中身】のID=3のとき、TBL.NAMEがNullなのでヒットしない。 【クエリ】のWhere条件左辺をひねってみては? WHERE (((Nz(TBL.NAME)) Like IIf(Nz([Forms]![F_Form]![name])='','*','*'+Nz([Forms]![F_Form]![name])+'*')));
その他の回答 (2)
- 30246kiku
- ベストアンサー率73% (370/504)
以下はフォームでの Filter 設定でのものになりますが、クエリの WHERE でも同じです。 http://oshiete1.goo.ne.jp/qa5180535.html 一連の流れが参考になればと ※ 当該個所以外についても参考になるかと、
お礼
ご回答ありがとうございます。 ご提示いただいたURLを参考にさせていただきたいと思います。 このたびはどうもありがとうございました。
- tag1701
- ベストアンサー率54% (67/123)
下記のsqlを試してみてください。 SELECT * FROM TBL WHERE (((IIf(IsNull([Forms]![F_FORM]![NAME]),True,[NAME] Like "*" & [Forms]![F_FORM]![NAME] & "*"))=True));
お礼
ご回答ありがとうございます。 教えていただいたSQL文で意図した動作となりました。 このたびはどうもありがとうございました。
お礼
ご回答ありがとうございます。 教えていただいたSQL文で意図した動作となりました。 また、何故ヒットしないかご教示いただきありがとうございました。 右辺だけでなく、左辺にもNzをつければ良かったんですね。 このたびはどうもありがとうございました。