電子書籍の厳選無料作品が豊富!

VBAを使えば簡単にできるのですが、事情があり、クエリーのみで行わなければいけません。

フォームに入力された情報を元に検索できるクエリを作成しました。
通常でしたらクエリのフィールド名の下の抽出条件に
Forms![F_検索]![検索条件1]
とすればいいのですが、これが複数の条件を設定した場合はすべての条件を入力しないと、検索結果が出ないことから
以下のように変更しました。

フィールド名の抽出条件には何も書かず、別に式として
IIf(IsNull(Forms![F_検索]![検索条件1],True,[フィールド1]=[Forms!]![F_検索]![検索条件1]))
と入力しそこの抽出条件に「True」と入力しました。

これで何も入力されてない場合は全件が表示されるようになりました。

通常の検索はこれでいいのですが疑問点が2点あります。

1.期間を抽出する場合はどうしたらいいのか?
IIf(IsNull(Forms![F_検索]![検索条件1],True,[フィールド1]=Between [Forms!]![F_検索]![検索条件1] and [Forms!]![F_検索]![検索条件2]))
とかしてみましたがダメでした。

2.あいまい検索をするにはどうしたらいいのか?
IIf(IsNull(Forms![F_検索]![検索条件1],True,[フィールド1]=Like [Forms!]![F_検索]![検索条件1]))
なんてしてみましたがだめでした。

ご回答よろしくお願いします。

A 回答 (1件)

期間の場合ですが、どちらかが空白の場合は


最小値:0
最大値:#2099/12/31#
に設定する。
Between Nz([Forms!]![F_検索]![検索条件1]) And Nz([Forms!]![F_検索]![検索条件2],#2099/12/31#)

あいまい検索の場合は
Like "*" & Nz([Forms!]![F_検索]![検索条件1],"*") & "*"

Nz関数はフィールドがNullの場合、設定した値に置き換えます。
省略時は0に置換
    • good
    • 0
この回答へのお礼

無事できました。
こんな方法もあるんですね。
知りませんでした。

ありがとうございました!!

お礼日時:2004/09/10 11:05

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


おすすめ情報