• ベストアンサー

アクセスで指定した月のデータを抽出したい

アクセスは初心者なので、初歩的な質問だと思いますが、お願いします。 月別データで○月~○月のデータを抽出したい場合ですが、現在クエリを使いbetween [開始月] and [終了月]で抽出するようになっています。(開始月、終了月は使用する人が各自で見たい月を入力します) ですが、これでは開始月が終了月より大きかった場合(例えば 開始月3月、終了月1月)終了月~開始月のデータが抽出されてしまいます(1月~3月のデータが抽出されてしまう。) こういう場合 どのように修正すれば、きちんとしたデータを抽出できるのでしょうか。 よろしくお願いします。

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

  • ベストアンサー
  • shimix
  • ベストアンサー率54% (865/1590)
回答No.3

>抽出する月は1年分のデータが元となるので、 年を持っていなければ、開始月と終了月の大小をチェックして、自分でクエリを組み立てないといけません。フォーム入力→コードでクエリ作成という手順で作成していれば、変更はできると思いますが、そうでなければ(単純にクエリ実行時に入力させているとか)であれば難しいです。  私はVBAのコードは書けないのですが、こんな感じでわかりますか?    if ([開始月] <= [終了月]) then      qstr = "select * from xxx where (mm>=[開始月]) and (mm ,=[終了月])"    else      qstr = "select * from xxx where (mm>=[開始月]) or (mm ,=[終了月])"    end 条件がandになるかorになるかの違いが出てきます。betweenは基本的にandと同義なので・・。 #しかし年月で持っていないと年度の変わり目などは大変じゃないですかねぇ・・。

ibu34
質問者

お礼

ありがとうございました! 四苦八苦してやってみましたが、結局上司に年も入れてシュミレーションしなさい という支持が出て(始めは年なしでの支持でした)、年を入れて完成しました。 やはり年があると単純なのですが、年がないと難しいですねえ・・・。 ですが、教えていただいたことは大変参考になりました!

その他の回答 (2)

  • kag
  • ベストアンサー率13% (8/61)
回答No.2

単純に  入力された月 >= [開始月] and 入力された月 <= [終了月] ってできないのですか

  • shimix
  • ベストアンサー率54% (865/1590)
回答No.1

テーブルに(たとえ月別データでも)「月」ではなく「年月」を持つようにします。[開始年月]と[終了年月]なら何の問題もありません。

ibu34
質問者

補足

ありがとうございます。 説明不足ですみません。 ○月~○月と抽出したデータを下に、あるシュミレーションをしています。そのため、抽出する月は1年分のデータが元となるので、年はデータの中にありません。 ひき続きよろしくお願いいたします。

関連するQ&A