• ベストアンサー

【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の場合、全件ヒットするクエリの書き方をご存知の方がいらっしゃいましたら、 ご教示いただければと思います。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

【テーブル(TBL)の中身】のID=3のとき、TBL.NAMEがNullなのでヒットしない。 【クエリ】のWhere条件左辺をひねってみては? WHERE (((Nz(TBL.NAME)) Like IIf(Nz([Forms]![F_Form]![name])='','*','*'+Nz([Forms]![F_Form]![name])+'*')));

iroha_168
質問者

お礼

ご回答ありがとうございます。 教えていただいたSQL文で意図した動作となりました。 また、何故ヒットしないかご教示いただきありがとうございました。 右辺だけでなく、左辺にもNzをつければ良かったんですね。 このたびはどうもありがとうございました。

その他の回答 (2)

  • 30246kiku
  • ベストアンサー率73% (370/504)
回答No.3

以下はフォームでの Filter 設定でのものになりますが、クエリの WHERE でも同じです。 http://oshiete1.goo.ne.jp/qa5180535.html 一連の流れが参考になればと ※ 当該個所以外についても参考になるかと、

iroha_168
質問者

お礼

ご回答ありがとうございます。 ご提示いただいたURLを参考にさせていただきたいと思います。 このたびはどうもありがとうございました。

  • tag1701
  • ベストアンサー率54% (67/123)
回答No.2

下記のsqlを試してみてください。 SELECT * FROM TBL WHERE (((IIf(IsNull([Forms]![F_FORM]![NAME]),True,[NAME] Like "*" & [Forms]![F_FORM]![NAME] & "*"))=True));

iroha_168
質問者

お礼

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

関連するQ&A

専門家に質問してみよう