• ベストアンサー

年月日を持つテーブルから年月を指定して抽出したいのですが

ACCESSをつかっています。 年月日、氏名、その他のレコードを持つテーブルがあります。 フォーム、レコードで検索条件のコンボボックスがあるとします。 条件で、2002年4月を選ぶと、2002/04/01~2002/04/30 までのデータを出せるようにしたいのです。 他の質問にあるあいまい検索等を参考にしましたが、コンボボックス と、テーブル、フォームの関係が頭の中でごちゃごちゃになって つながりません。最終的にはフォームの上部にコンボボックスがあり、 下部(サブフォームでしょうか)に抽出されたデータがでればと 思っています。なにぶん初心者なもので質問自体もわかりにくいと 思いますがよろしくお願いします。

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

  • ベストアンサー
  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.1

こんにちは。maruru01です。 コンボボックス(cbo年月)のリストデータは、"2002年4月"のように日付で認識出来る文字列とします。 コンボボックスのClickイベントまたはChangeイベントに次のように書きます。 Dim startYM As Date Dim endYM As Date Dim myFilter As String If Me!cbo年月.Value = "" Then   '未選択   Exit Sub End If '年月だけだと"○○○○/△△/1"と1日を返す startYM = CDate(Me!cbo年月.Value) '1ヶ月後の前日(つまり今月の末日)を返す endYM = DateAdd("m", 1, startYM) - 1 'フィルタに設定する抽出条件文字列を作る myFilter = "年月日 BETWEEN #" & startYM & "# AND #" & endYM & "#" 'フォームにフィルタをかける Me.Filter = myFilter Me.FilterOn = True 関数などの詳細はヘルプを参照して下さい。 では。

ichiro-ichiro
質問者

お礼

どうもありがとうございます。なるほど、という答えでした。 まだ完全にはできていませんが、とてもよいヒントとなり、 もう少しでできそうです。頑張ってみます。

その他の回答 (1)

  • yohkah
  • ベストアンサー率53% (46/86)
回答No.2

月単位で良いのならACCESSではmonth関数が使えますから、 where month(年月日)=4 と言うような検索式を設定すればOKでしょう。もし年号が必要ならandでyear関数を追加すれば絞れますね。 当然コンボボックス内の条件「2002年4月」から年号と月のデータ抽出はする必要が有りますが。

ichiro-ichiro
質問者

お礼

ありがとうございました。ヒントになりましたので頑張って やってみます。

関連するQ&A