- ベストアンサー
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の時に返す値が判りません。 どうかよろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
これではどうでしょうか? クエリーの列を追加で フィールド: IIf(IsNull([FORMS]![フォーム].[FORM]![コンボ年]),True,[テーブル].[年]=[FORMS]![フォーム].[FORM]![コンボ年]) 抽出条件:True 月の条件も同様に列を追加してください。
その他の回答 (1)
- peso
- ベストアンサー率41% (40/97)
クエリで無理やり作ろうと思うと =[年コンボ] Or <IIf(IsNull([年コンボ]),10000,0) みたいな感じになると思います。。。(本当に無理やり・・・)
お礼
回答ありがとうございます。 こんな方法もあるんですね! これでも一応充分なんですが、もしクエリの抽出条件の欄を使わないでスマートに作るとなると、どうするのでしょうか?後学のために教えていただけませんでしょうか。
お礼
あう!自己レスです。 理解できました! わざわざ 年:Year([入力日]) なんかのフィールドを作った上で抽出するなど回りくどいコトする必要ないんですね! (まあ、このフィールドはこれで必要だったりしますが) フィールド: IIf(IsNull([Forms]![フォーム]![年コンボ]),True,Year([入力日])=[Forms]![フォーム]![年コンボ]) 抽出条件:True これでいいわけですね。ありがとうございます! 理解が悪くてすみません。 もし参考までに他の方法をご存じでしたら教えてください。 ありがとうございました。
補足
回答ありがとうございます。 ちょっとおバカさんで充分理解しきれなかったのですが。。。 コンボ年がNullならTrueを返し、Not Nullならコンボ年の値を返すフィールドを追加するということでしょうか?(あってます?^^;;)そして抽出条件はTrueとすると。 これで設定したらコンボの値に関わらず全て表示されてしまったのですが・・・? [テーブル].[年]=[FORMS]![フォーム].[FORM]![コンボ年] のあたりがよくわからないのですがよろしければ解説願えますでしょうか。