初心レベルの者です。クエリのフィールドに式を記述方法の質問です。
商品テーブルにはID、品名、フィールド色々と終息(チェックボックス)があります。商品登録・検索用の単票フォームがあり、それに[終息除く](値1)と[終息含む](値2)のオプションボタングループ(名前:opb_syusoku)を実装してます。商品品名検索用のコンボボックスもあり、そのソースは商品テーブルに設定しています。
オプションボタン(1Or2)によりコンボボックスのリスト項目を変更したい(終息除く分、終息も含める分)のでコンボボックスのフォーカス取得後イベントにRowSourceをIFで切り替えをVBAコード記述してます。そうする為にソース用クエリを2つ用意してます(終息<>Yesと設定なし)。これで機能はしているのですがソース切り替えずにクエリを一つにまとめたいのです。多分クエリのフィールドに式を記述で出来ると思うのですが、記述内容がわかりません。現状と同じ方法で他のフォームにも設定しておりクエリが増える一方で管理がややこしいので。
いい方法を教えて頂けますでしょうか。宜しくお願いします。
通報 ...
フォームの内容を参照することになるので、フォームの名前も質問内に入れるようにしましょう
全て含める(条件を設定しない)場合と、絞り込みをする場合を切り替えたいとなると、単純な保存済みクエリにするには悩むところですね。今回はYes/Noなので、例えば
とすると、
「『全て含める』ときはYesもNoも抽出対象にする(終息=False Or 終息=True)」
「『終息除く』ときはNoだけを抽出対象にする(終息=False Or 終息=False)」
として実現できます
SQL構文的には無駄な記述になりますが、保存済みクエリで対応するときにはこういう一捻りが必要になることも多いですね
RowSourceに設定したクエリに抽出条件を設定するなら、hirotonさんの回答のような条件になりますね。
オプショングループとコンボボックスが同じフォームにあるのなら、フォーム名は省略することができますので下記でもいいですね。
コンボボックスのフォーカス取得後イベントでコンボボックスを再クエリします。
RowSourceにはSQLも設定できますので、VBAを使うなら、RowSourceにSQLを設定してもいいですね。
そうするとクエリ自体が不必要になりクエリが増えて管理が煩雑ということがなくなります。
hirotonさん・hatenaさん ありがとうございます。
コンボボックスとオプショングループは同一フォームにあります。
hatenaさんのコードを編集して記述したら上手くいきました。簡素化できてありがたいです。
ちょっとした事ならSQLでした方が断然楽ですね。
お世話になりました。