検索用のコンボボックスが3つあります。cmb1,cmb2,cmb3
これらがnullでない場合は、これでフィルターをするクエリを作りたいです。
例えば、
cmb1 | cmb2 | cmb3 | |
---|---|---|---|
① | 東京都 | 男性 | 未婚 |
② | 東京都 | null | null |
③ | null | null | null |
①の時は、東京都かつ男性かつ未婚の三条件すべてでのフィルター
②の時は、東京都だけ
③の時は、フィルターなしの全データ
ということがやりたいのですが、
クエリのデザインビューを使ってどのように記載すればよいのでしょうか。
自己解決したみたいです。
系を使えばよいのですね。
like iif([forms]![form名]![cmb1] is null , '*', [forms]![form名]![cmb1])
これだと、Null値のレコードは抽出されません。
テーブルに Nullのレコードがなければいいですが。
ご回答ありがとうございます。
ご指摘の件、確認して理解いたしました。
データにNull値がないようにするセーフティーネットはつけていなかったので、
Nullのデータがある場合には検索ができなくなりますね。
対処法はあるのでしょうか。
下記のようにフィールド欄に式を設定して、抽出条件をTrueにしたらどうでしょう。
IIf([Forms]![Form名]![cmb1] is null , True, [forms]![form名]![cmb1]=[フィールド名])
他のフィールドも同様に設定してください。
前回の回答だと、インデックスが無効になるので、データ数が多いと重くなる場合があります。その場合は、下記のようにしてください。
SQLビューで下記のように記述します。
テーブル名、フィールド名は実際のものに変更してください。
保存するときは、SQLビューのまま保存してください。デザインビューにすると、複雑に書き換えられてしまうので、デザインビューにして保存しないようにしてください。
ご提案ありがとうございます。
ちょっと、うまくいきませんでした。
この部分は、Nullにならないように、入力時にチェック機能をつけて、対応したいと思います
ありがとうございました。
テキスト型のフィールドならば、
テーブルのデザインビューで、フィールドのプロパティを下記のように設定すると、
未入力は Null ではなく ""(空文字列)になります。
値要求 はい
空文字列の許可 はい
入力済みのフィールドは変わらないので、更新クエリか、置換で
Nullを""に更新します。
これで、質問の式か、下記の式でOKになります。
Like Nz([Forms]![Form名]![cmb1], '*')