質問: accessのクエリー抽出条件にiifを使用して コンボボックスの値を抽出条件にしたクエリーを作成しています。 コンボボックスにて"all"を選択したときに、全レコードを表示したく、 以下の式を入れたのですが全表示がされません。 iif([forms]![テーブル名]![コンボ値]="all",like "*",[forms]![テーブル名]![コンボ値]) like "*" の部分がいけないのでしょうか? (偽の場合は選択した値のレコードが抽出されます) どなたか教えてください、よろしくお願いいたします。
回答: 直接の答えではありませんが・・・。 動的に変更する条件すべてをiif関数でカバーしようとすると、sqlの可読性、保守性が著しく劣化します。 ( 3分岐以上なら、iifのネストが必須 ) という訳で、vbaで必要なsqlを動的に生成し、都度割り当てる、という方法はどうでしょうか? これなら、3分岐以上でもselect case文で簡潔に記述できますし、プログラムの変更があってもソースコードの見通しは悪くなりません。