• ベストアンサー

全ての月初の日付を表示させたいのですが

アクセスなのですが コンボボックスに 2000年から2013年の全ての月初の日付を表示させたいのですが クエリで作ることは可能でしょうか? 2000/1/1 2000/2/1 2000/3/1 2000/4/1 2000/5/1 2000/6/1 2000/7/1 2000/8/1 2000/9/1 2000/10/1 2000/11/1 2000/12/1 . . . こんな感じでクエリで作りたいのですが、 テーブルに値を入れないと不可能でしょうか?

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

  • ベストアンサー
  • m3_maki
  • ベストアンサー率64% (296/460)
回答No.5

比較的、メンテナンスの簡単だと思われる例です。 年と月のテーブルを作成します テーブル :: T_年 フィールド : 年 年に 2000 ~ 2013 の値を入力します。 テーブル :: T_月 フィールド : 月 月に 1 ~ 12 の値を入力します。 クエリを作成します。 SELECT DateSerial([年],[月],1) AS 年月日 FROM T_年, T_月 ORDER BY DateSerial([年],[月],1); デザインビューでは添付画像のようになります。 2014年を加える場合も 「T_年」 に 1レコード追加するだけですみます。 ※ユニオンクエリなどを駆使すれば、新しいテーブルを作らなくても何とかなるのですが、  新しい年を追加したいときに、  ユニオンクエリのSQLビューを編集するのは、実際的ではないですよね?

UJERMMSAWCON
質問者

お礼

ありがとうございました。

その他の回答 (4)

  • chayamati
  • ベストアンサー率41% (260/624)
回答No.4

どのような目的で、このようなリストが必要ですか? もし任意の日付の月初日なら クエリーに 月初: [日付]-Day([日付])+1 とフィールドを追加します。 少し解説を加えます 日付はシリアル値という連続した数値ですね(小数点以下は分、秒) [日付]-Day([日付])は前月末のh付です この翌日が月初日になります。

UJERMMSAWCON
質問者

お礼

ありがとうございました。

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.3

No2です。 変数の宣言のところが重なって宣言されていました。   Dim db As DAO.Database   Dim rs As DAO.Recordset   Dim dStart As Date   Dim dEnd As Date     Dim dBase As Date です。

UJERMMSAWCON
質問者

お礼

ありがとうございました。

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.2

クエリでは無理だとおもいますが。 あっさり、テーブルを作ったほうが 早いと思います。 テーブル名を「T日付」として、 日付 日付/時刻型 のフィールドを作成します。 以下のコードを標準モジュールに貼り付け 実行してみてください。 インプットボックスが出るので、 「始める日付」に 2000/01/01 「終わる日付」に 2013/12/01 と入力してください。 なお、DAOを使っているのでコード表でツール、参照設定で DAOのチェックを確認しておいてください。 Sub test()   Dim db As DAO.Database   Dim rs As DAO.Recordset   Dim dStart As Date   Dim dEnd As Date  Dim dBase As Date   Set db = CurrentDb   Set rs = db.OpenRecordset("T日付", dbOpenDynaset)   dStart = InputBox("始める日付")   dEnd = InputBox("終わる日付")   rs.AddNew   rs!日付 = dStart   rs.Update   dBase = dStart   Do While dBase < dEnd     rs.AddNew     rs!日付 = DateAdd("m", 1, dBase)     dBase = DateAdd("m", 1, dBase)     rs.Update   Loop End Sub 作成したテーブルをコンボボックスの レコードソースにします。

UJERMMSAWCON
質問者

お礼

ありがとうございました。

  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.1

選択肢にいれたいということでしょうか ということでしたら 値集合タイプで値リストにして 値集合ソースを 2000/1/1,2000/2/1,2000/3/1,2000/4/1,2000/5/1,2000/6/1,2000/7/1,2000/8/1,2000/9/1,2000/10/1,2000/11/1,2000/12/1 にすればクエリでなくても可能です。 クエリで作りたいのでしたら、データのあるテーブルが必要です。

UJERMMSAWCON
質問者

お礼

ありがとうございました。

関連するQ&A

専門家に質問してみよう