• ベストアンサー

ACCESSで1月1日~12月31日までの日付を入れる方法

ACCESSで日報を作成するのですが、365日分のレコードを作りたいと思っています。 (記入のない日にもその日付と記入欄があるようにしたいです) こういうテーブルを作ろうとする際には、やはり予め365日分の日付を入力しておかなければなりませんでしょうか。 くだらない質問で申し訳ありませんが、ご教授お願いいたします。

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

  • ベストアンサー
noname#60992
noname#60992
回答No.3

>(記入のない日にもその日付と記入欄があるようにしたいです) いろいろな考え方があると思いますが、私はこのような時 テーブルを2つに分けることが多いです。  一つ目のテーブルはただ単に日付のみを入れておくもの、 二つ目のテーブルには日報のデータ(記載日時、対象日付、記録者ID、記載内容、、、、)を入れておくものとします。 情報を表示する際に、リレーションシップをつけて処理します。 こうすることにより、無駄なデータをなくすことができます。 >予め365日分の日付を入力しておかなければなりませんでしょうか。 あらかじめ箱を作っておくという考え方は、必ずしもだめというわけ ではありません。 (一月単位で行われることはよくあります。)

hipongak
質問者

お礼

なるほど、とても参考になりますね。 > あらかじめ箱を作っておくという考え方は、必ずしもだめというわけ ではありません。 > (一月単位で行われることはよくあります。) この言葉に励まされ、予め入力することにしました。 ありがとうございました!

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

noname#140971
noname#140971
回答No.2

<日報> ID____________日付____________報告_1________________________報告_2 1_____________2007/01/01___報告します_1 2_____________2007/01/02____________________________________報告します_2 3_____________2007/01/03 4_____________2007/01/04 ・・・・・ 365_________2007/12/31 さて、今、日報の雛形を作成し、1/1と1/2の報告_1、報告_2を更新してみました。 この場合に、私が新たに書いたコードは以下のようです。 Option Compare Database Option Explicit Private Sub コマンド0_Click()   Dim I   As Long   Dim Hiduke As Date      For Hiduke = "2007/01/01" To "2007/12/31"     I = I + 1     CnnExecute "INSERT INTO 日報 (ID, 日付) VALUES (" & I & ",#" & Hiduke & "#);"   Next Hiduke End Sub Private Sub コマンド1_Click()   CnnExecute "UPDATE 日報 SET 報告_1='報告します_1' WHERE 日付=#2007/01/01#"   CnnExecute "UPDATE 日報 SET 報告_2='報告します_2' WHERE 日付=#2007/01/02#" End Sub つまり、質問者の構想もあながち実現不能な訳ではありません。 しかし、それが最適なやり方かどうかわ判りません。 なお、CnnExecute関数の類は Access では直接にはサポートされていません。 が、ADODB のヘルプを参照すると割りと簡単に作成できるでしょう。

hipongak
質問者

お礼

ご回答ありがとうございます。ただ‥今の私にはまだまだ難しいようでした。 CnnExecute関数についても調べるうち、色々わかってきましたので、今後に活かしたく思います。 本当にありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。
  • survey
  • ベストアンサー率26% (17/65)
回答No.1

ご質問ですが、 (1)365日分のレコードを作りたい (2)予め365日分の日付を入力しなければならないか? (1)ですが、今すぐに365日分のレコードが欲しいという意味であれば、365日分の日付を入力する必要があるのではないでしょうか?この入力を簡便にするのであれば、VBを利用して容易に行えます。 (2)ですが、日付をあらかじめ用意するというのはあまり賢い方法ではありません。なぜなら、今後も用意し続けなければならないからです。私なら、ユーザー毎にレコードを抽出し、該当日付がなければレコードを新規追加するというようなコードを記述して対応します。 ちなみに、弊社で使用している日報システムは、VB+ACCESSで作成したものです。

hipongak
質問者

お礼

ありがとうございます。 >なぜなら、今後も用意し続けなければならないからです。 確かにそうなのですよね。。しかし確実に日付を残そうとすると、 VBに明るくない私では予めの入力が一番早いような気がしています。 VBの方向でもう少し調べてみたいと思います。ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Access2003の日付と印刷

    Access2003を3日前に初めて個人情報を管理するデータを作成しているのですが、 日付を2003/12/01と入力したら次の欄に自動的に2004/11/30と一年後の日付を出力するにはどうすればよいでしょうか? あとフォームでレコードを検索し、表示されたレコードのページ(1ページ)のみを印刷したいのですが、 フォームに印刷タブを作成しクリックするとレポートで作成した印刷プレビューにとぶまでは作成できたのですが、 レコードに入力したデータ前ページすべてが印刷されてしまいます。 選択したレコードのみを印刷するにはどうすればいいでしょうか? 始めたばかりの初心者でくだらない質問かもしれませんが、どなたかご教授お願いします。

  • 同一日付を1とカウントする方法。

    日報から月報を作成しています、日報は1生産ラインで1品種毎に発行されます。従って同じ日に3品種生産した時は3枚の日報となります。日報を張り付けるとINDIRECT関数で月報のシートにコピーされます。月報は1品種 1行に収まるようになっています。今は月報の日付欄には日報1の行にだけ手入力で入れ、日付列の最終列でCOUNTしています。手入力を省きたいのですが日付をDIRECT関数でコピーすると日付列に日報の枚数分同一日付が並びます、同一日付を1 とカウントさせる方法を教えて下さい。

  • Accessで同じ日付を入れたいのです。

    ほぼアクセス初心者です。顧客台帳を作成しているのですが、「初回来店日」と「最終来店日」というフィールドを作成しまして、新規顧客データを入力する際、その2つに初回来店日の日付を同時に入れたいと思っております。 お客様には最初にカードを記入してもらっておりまして、ある程度紙がまとまった段階で入力しますので、Data()だと入力しなおす手間がかかってしまい、なにか方法があるのかなと思って質問致しました。 「最終来店日」は紙でチェックしているので、その都度更新していくような感じになっております。 よろしくお願い致します。

  • ACCESSでオートIDのように日付が入るようにしたい

    表題だけでは何のことか自分でも分かりませんが、下記のようなことをやりたいと考えております。 1.日々の予定表と日報をACCESSで作る 2.毎日の予定を未来のことも含めて入力していくので、現在マウスホイールを回すと オートナンバー型のIDの数字が進むみたいに日付をくるくる進むようにしたい。 3.テーブルに日付を予め入力していくことも考えたが、ずっと使う予定のものなので、 できればACCESSの持つ機能で済ませたい カレンダーの導入なども考えましたが、毎日必ず入力するので、いちいち日を選択→代入というのも違うかと思います。 ググっても出てこないので、出来ない可能性が高そうですが、どうぞ宜しくお願いします。

  • Accessで新しいレコードに規定値を入力させるには?

    こんにちは いつも助けてもらってありがとうございます またお願いします アクセスで会社の業務日報を作成しています テーブルである一日のデータを入力します 次に翌日のデータを入力(新規カード)する時に前カードの翌日の日付を自動的に入るようにしたいのですが方法が分かりません また、同じように、前のレコードに入力したデータを次のカードでもそそまま使いたいので同じ内容が複写されるようにしたいのですが、その方法も分かりません 初歩的な質問で申し訳ないのですが、お分かりの方あれば教えて下さい よろしくお願いします

  • Access 特定日のカウント

    こんにちは。 Access2002を使っています。 考え方がわからないので教えてください。 テーブルAには連続したユニークな「日付」列があります。 テーブルBには各会員の「開始日」列と「終了日」列があります。 知りたいことは、「日付」に対して、「開始日」と「終了日」の間に 何日分の有効レコードがあるかです。 [日付]の列にbetween [開始日] and [終了日]としてカウントを取れば 簡単に出そうなのですが、別々のテーブルです。 例えば「日付」には1/4からの連続した日付、 「開始日」-「終了日」には、 12/20-1/5 1/1-1/15 とあるとします。 導き出したい答えは 「日付」 1/4:有効2レコード 1/5:有効2レコード 1/6:有効1レコード 旨く説明できなくて済みません。 期間中の有効日付の数をどのように数えたらいいのか教えてください。 よろしくお願いします。 haru

  • accessの時間更新方法(フォーム)

    access超初心者なので教えてください。 access2002を使用しています。 accessでフォームを作成しました。 フォーム内には、簡単な日付、時間、メモ的なフォーム欄があり、 日付と時間はオートで付与され、テーブル内で規定値に 日付:=Date() 時間:=Now() を設定しています。 上記2つは別々のフォーム欄に分ける必要があるんです。 そして、新規作成ボタンを作り、クリックすることで、 入力したデータはテーブルに保存されます。 ここで質問なんですが、新規作成ボタンをクリックすることで、 今まで入力していたものはテーブルに格納され、新しい日付と時間 がオートで日付と時間のフォーム欄に表示されるのですが、 この表示された日付、時間をより新しい情報に更新するにはどうしたら いいのでしょうか? 分かりづらくてすみません。 例を出します。 日付:2008/05/09 時間:13:55 メモ:テスト 上記を各フォームに入力し、新規作成ボタンを押します。 ↓ 上記情報がテーブルに格納されます。 ↓ 新しい日付と時間が表示され、メモ欄は空白の 新しいフォームが現れます。 日付:2008/05/09 時間:13:56 メモ:(入力待ち状態) この時、新規作成ボタンを再度クリックしても、時間が更新されず、 テーブルにも格納されません。 テーブルに格納されないのはいいことなんですが、時間が更新されない のは困るんです。。。 新規作成ボタンを押すごとに、時間が更新されているようにするにはどうしたら いいのでしょうか? (新規作成ボタン以外に新たに時間更新用のボタンを作ることも対処の視野に入れます)

  • MSアクセスで最後に入力したところから始めるには

    アクセス初心者です。 アクセス2000を使用しています。 「日付」と「記録」を入力するテーブルを作成し、 入力用のフォームは作成しました。 ところがフォームを開くと、毎回1番最初に入力したレコードが表示されます。 最後に入力したレコードから始めるには、どうしたらいいのか教えてもらいたくて質問しました。 よろしくお願いします。

  • Access2010 レコードの更新日付の設定

    Access2010です。 レコードが更新された日付を自動的に記録するような方法はあるでしょうか。 レコードの作成日付初期値の指定でいけると思いますが、更新日付をできれば テーブルのデザインの中でできないかと思っています。 よろしくお願いします。

  • アクセスのテキスト型フィールドの初期値

    アクセスのテーブルにテキスト型フィールド「●●日付」を作成しました。さらに、定型入力の方法として、日付(____/__/__)を指定しています。 このテーブルから、クエリでデータを取得する際、●●日付にデータを入力していないレコードのみを取得したいと思い、クエリの抽出条件として=""(ダブルクォーテーション)や=''(シングルクォーテーション)と記載したのですが、レコードが1件も抽出されません(もちろん●●日付にデータを入れていないレコードは複数あります)。一方で、<>""や<>''で、●●日付にデータが入力されているレコードを抽出しようとした場合は、●●日付にデータが入力されているレコードが抽出されます。 テキスト型フィールドにデータが入力されていないレコードを抽出するクエリはどのようにしたら作成できるのでしょうか?

このQ&Aのポイント
  • マッチングアプリで出会った女性との関係が上手くいかず、メンタルを病んでしまった33歳男性の悩みについて考えます。
  • 女性からのドタキャンや嘘、上手くいかなかったお付き合いの結果、彼の自己肯定感は下がり、精神的なダメージを受けました。
  • 彼は1年間に渡ってマッチングアプリを利用し、何度も出会いを試みましたが、結果的に失敗し、人間不信になってしまいました。彼にとって、この苦しい経験がどのような糧となるのか、前に進むためのアドバイスを探ります。
回答を見る