質問: access フォームコンボボックス空白をクエリで抽出したい 現在access2000を使って、 フォーム1内にコンボボックスを作って コンボボックス内に1,2,3 と項目を入れています。 一方、クエリを使って、上記フォーム内のコンボボックスをつなげて1,2,3をそれぞれ抽出することはできるのですが、 1から3まで全てをiif関数などで 抽出したいと考えてします。 僕が考えた関数は iif(isnull([フォーム1][コンボ1]),is not null ,[フォーム1][コンボ1]) とクエリ抽出条件内に入力すると、結果は、 1、2、3をそれぞれフォームコンボボックスで選択すれば、クエリに反映されるのですが、コンボボックス内を「空白」の状態にすると、1,2,3すべてがクエリで抽出されるのではなく、何も抽出されないという結果になってしまいます。 どうすれば、クエリで1から3すべてを抽出することができるのでしょうか?多分、iif関数内の「空白」は空白として処理されないような気がします。 よろしくお願いします。
回答: あの書き方はsqlを理解しているものにとっては ごくあたり前の書き方なんですが accessのクエリデザインビューが対応していないため 一度保存した後、クエリデザインビューで再度表示すると 異なるものに書き換えられたりするため(書き換えられても正常に働きます) msの技術情報とか、msのご機嫌を損ねたくない書籍・雑誌では紹介されない方法です msなんかが推薦している書き方は iif(isnull(forms![フォーム1]![コンボ1]),true ,フィールド名=forms![フォーム1]![コンボ1]) という式フィールドを作り 抽出条件欄に「true」と書く方法ですね そういう意味では裏技的な書き方です あの書き方の優れているところは あのような抽出を複数フィールドに対して行いたい場合 (複数条件の入力されたものだけで抽出したい場合) 同じ書き方のものをそれぞれのフィールドに書いてやるだけでいい点です ただしその場合に行われるデザインビューでの書き換えはとんでもないものになりますので クエリ完成後はsqlビューで表示してから保存し 絶対にデザインビューで表示しないようにしなければなりません