• ベストアンサー

Access抽出クエリの基本的なこと

お世話になります。 初心者で苦労しながらもAccess2000でデータベースを作成しています。 非常に基本的な質問だと思うのですが、どなたかご教授願います。 日付を含むフィールドがあるテーブルがあり、クエリにてその日付から 年と月を拾っています。 ID   入力日   年:Year([入力日])   月:Month([入力日]) 1   2001/07/06    2001          6 2   2002/06/07    2002          6 3   2002/07/19    2002          7 別に作成したフォームに年と月を絞り込むためのコンボボックスをそれぞれ配置し、 入力された値によって上記クエリの抽出条件に反映させたいのですが、コンボに何も 入力されていないときは全てのデータを表示したいんです。 「コンボ月=2002」&「コンボ月=6」でID=2のデータのみを、 「コンボ月=(Null)」&「コンボ月=6」でID=1と2のデータを表示したいんです。 (判りにくくてすみません。。) このような場合、抽出条件に記述する式はどのように設定したら良いのでしょうか? IIfでIsNullの条件式を組んだのですが、Nullの時に返す値が判りません。 どうかよろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • harumimi
  • ベストアンサー率46% (51/109)
回答No.2

これではどうでしょうか? クエリーの列を追加で フィールド: IIf(IsNull([FORMS]![フォーム].[FORM]![コンボ年]),True,[テーブル].[年]=[FORMS]![フォーム].[FORM]![コンボ年]) 抽出条件:True 月の条件も同様に列を追加してください。

hitoshipon
質問者

お礼

あう!自己レスです。 理解できました! わざわざ 年:Year([入力日]) なんかのフィールドを作った上で抽出するなど回りくどいコトする必要ないんですね! (まあ、このフィールドはこれで必要だったりしますが) フィールド: IIf(IsNull([Forms]![フォーム]![年コンボ]),True,Year([入力日])=[Forms]![フォーム]![年コンボ]) 抽出条件:True これでいいわけですね。ありがとうございます! 理解が悪くてすみません。 もし参考までに他の方法をご存じでしたら教えてください。 ありがとうございました。

hitoshipon
質問者

補足

回答ありがとうございます。 ちょっとおバカさんで充分理解しきれなかったのですが。。。 コンボ年がNullならTrueを返し、Not Nullならコンボ年の値を返すフィールドを追加するということでしょうか?(あってます?^^;;)そして抽出条件はTrueとすると。 これで設定したらコンボの値に関わらず全て表示されてしまったのですが・・・? [テーブル].[年]=[FORMS]![フォーム].[FORM]![コンボ年] のあたりがよくわからないのですがよろしければ解説願えますでしょうか。

その他の回答 (1)

  • peso
  • ベストアンサー率41% (40/97)
回答No.1

クエリで無理やり作ろうと思うと =[年コンボ] Or <IIf(IsNull([年コンボ]),10000,0) みたいな感じになると思います。。。(本当に無理やり・・・)

hitoshipon
質問者

お礼

回答ありがとうございます。 こんな方法もあるんですね! これでも一応充分なんですが、もしクエリの抽出条件の欄を使わないでスマートに作るとなると、どうするのでしょうか?後学のために教えていただけませんでしょうか。

関連するQ&A