• ベストアンサー

Accessで年齢の計算

Access初心者です。 テーブルに"19851215"、"19860202"のように西暦と月日が連続したデータとなってるデータが保存されているとします。 クエリーで、現在の年齢に変換して表示させようと思っているのですがうまくできません。どなたか、詳しい方がいらっしゃいましたら教えてください。よろしくお願いいたします。

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

  • ベストアンサー
  • Raistlin
  • ベストアンサー率63% (65/102)
回答No.3

作業フィールドを使う形で。 提示の文字列の格納されているフィールド名を[DtTxt]とします。 順に「文字列を日付として認識できる形に変換」、「数え年齢」、「満年齢」です。 Brthdy: DateValue(Format([DtTxt],"0000\/00\/00")) thYr: DateDiff("yyyy",[Brthdy],Now()) Ag: IIf(Format([Brthdy],"mmdd")<Format(Now(),"mmdd"),[thYr]-1,[thYr]) #CHRONOS_0さんの式を当方の2003で試してもうまくいかなかったので拙作も投稿しておきます。

Excel_VBA
質問者

お礼

返答有難うございます。 早速試してみたところうまくいきました。作業フィールドを変数のように使えば出来るのですね?本当に有難うございました。今後とも宜しくお願い致します。

その他の回答 (3)

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.4

>CHRONOS_0さんの式を当方の2003で試してもうまくいかなかったので拙作も投稿しておきます。 括弧がおかしかったみたいですね 修正です(今度はテスト済みです) 年齢: DateDiff("yyyy",DateValue(Format([誕生日],"0000/00/00")),Date())+(Right([誕生日],4)>Format(Date(),"mmdd")) & "才"

Excel_VBA
質問者

お礼

実は、私も試してみたところ括弧の数が多いとAccessに怒られて、うまくいかずに悩んでいたのです。 訂正版を現時点ではためしていませんが、帰宅したら早速試してみたいと思います。 本当に有難うございました。今後とも宜しくお願い致します。

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.2

>"19851215"、"19860202" はAccessにとっては単なる数字で日付ではありませんから 関数で日付に変換してやらなければなりません フィールド名が誕生日だとして 年齢: DateDiff("yyyy",DateValue(Format([誕生日],"0000/00/00")),Date())+(Right([誕生日],4))>Format(Date(),"mmdd")) & "才"

  • QES
  • ベストアンサー率29% (758/2561)
回答No.1

テーブルのフィールド名を生年月日に、データ型を日付/時刻型にしておきます。 クエリのデザインで、年齢:DateDiff("yyyy",[生年月日],Date())としたら、現在の年齢が表示されます。

Excel_VBA
質問者

お礼

ご回答有難うございます。 今回は、既にデータが入っていたので、データ型を変えようとしたところデータが失われるとAccessに怒られたので、泣く泣く諦めました。 次回からは、試してみたいと思います。 今後とも宜しくお願い致します。

関連するQ&A

  • Accessで年齢の計算

    Accessで年齢の計算 初心者です。 フォーム・クエリで計算式で表示させることはできたのですが,それをテーブルに反映させる方法が分かりません。テーブルには「年齢」列はあるのですが計算結果が反映されないので,テーブルから抽出をかけたいので,よろしくお教えください。よろしくお願いいたします。

  • Accessのクエリでレコード追加

    Access初心者です。 バージョンは2010をつかっています。 テーブルを14テーブル含み、フィールド数が100ほどある選択クエリを作りました。 抽出条件などは設定していません。 このクエリで新しくデータを入力、レコードを追加し、上書き保存した後クエリを閉じます。 それからまた、そのクエリを開くとレコードが追加されていません。 テーブルにはその入力したデータは追加されています。 このクエリにもそのデータを追加表示させるためにはどうすればいいですか? 表示されない原因はなんなのかお教えお願いします。

  • Access2010で・・・

    Access初心者です。 社内でデータベースを作ることになり、分からないながらもやっていて、いざデータの入力をしようとすると問題が起きてしまいました。 クエリやフォームでデータを入力しレコードを追加して、上書き保存し画面を閉じて、また開くとクエリやフォームにレコードが追加されていないんです。 テーブルには、ちゃんと追加されています。 この原因は何でしょうか? お教えください。

  • アクセス2002の年齢の表示について

    初心者です。 顧客の情報の入力に当たって生年月日を入力することで 年齢を出そうと思い、 テーブルで生年月日を そしてクエリでInt((Date()-[生年月日])/365) とすることで年齢を表示させました。 しかしながら、それだけのためにクエリを作る必要があるのでしょうか? クエリではふりがな自動表示、住所入力支援ができず、 ちぐはぐな思いをしています。 もしテーブルで年齢を表示させられたらいいなぁと思い、 質問させていただきました。 的外れな質問かもしれませんが、基本がないものですから・・・わからないところは工夫をしてやっていますが もっとシンプルにできるはずだと思います。 どうぞよろしくお願いします。

  • ACCESS2007 テーブル作成クエリで

    ACCESS初心者です。 ACCESS2007でテーブル作成クエリをテキストに添って作成しました。 が、実行できません。 ナビゲーションウィンドウにはテーブル作成クエリが表示されているのですが、 それをダブルクリックしてもデータシートが表示されません。 何が原因かわかりません。 よろしくお願いします。

  • Access 生年月日19900205から年令

    Access2013で、生年月日をテーブルに短いテキスト形式で、例19900205 と,初めの4桁を西暦、次の2桁を月、後の2桁を日で入力してるのですが、これを基に、今日付けの年令を自動的に表示させるクエリ設定方法を教えて下さい。宜しくお願いします。

  • accessのクエリへの入力について

    Access初心者です。 2つのテーブル間で1つのリレーションをとってクエリを実行したのですが、実行により生成されたデータシートビュー上でデータを入力することができません。 リレーションとらずに1つのテーブルのみでクエリを実行したところ入力できました。 大変恐縮ですがこの違いについてご教授ください。 よろしくお願いいたします。

  • Access クエリ、計算について

    クエリで計算、集計した結果をもう一度計算する場合 一度テーブル作成クエリでテーブルを作成してから そのテーブルをクエリに変換しないといけない、と考えていましたが 集計したクエリを別のクエリで集計できるのですかね? テーブル作成クエリは、クエリを実行するたびに計算、集計すると 時間がかかってしまうので完成したデータをテーブルとして作成する という考え方であっているでしょうか?

  • Access2000 フォームで計算したものをテーブルに反映するには?

    上司に頼まれ、Access2000で従業員データを作成しました。 そこで、フォームにおいて年齢を計算するために 「生年月日」を入力する欄と、「年齢」を表示する欄を作成して コントロールソースにも入れて、うまく表示できたのですが、 その年齢の数字が、テーブルやクエリで見ると表示されていません。 他の何かのデータを見た時にはできていたはず。。。 表示する為の手順が足りないのでしょうが、初心者ゆえにまったくしてわかりません、教えて下さい。 どうかよろしくお願いいたします。

  • Access format関数を使わず日付を変換

    Access2016で、あるテーブルからクエリを作成して日付フィールド(西暦/月/日)を(西暦/年)のようにさせたいのですが、以下のようにformat関数を入力して実行すると完了するまでに非常に長い時間がかかってしまい困っています。 別の方法で処理をしたいのですが、ご存知の方いらっしゃるでしょうか。 SQLとかは使わず、初心者でも後から解読・編集できるような方法があればありがたいです。 元となるテーブルのデータ型は都合上変えられません。 フィールド名 日付 データ型 日付/時刻型 データサンプル 2024/2/27 クエリでやりたいこと 元のテーブルのデータを日別ではなく月別で集計したいため、 日付データを 年/月/日 ではなく 年/月 に変換したい ※同月のデータを同一の値に変換できさえすれば合計できるので、表示される形式は「2024/2」でも「2024年2月」でも「202402」でも構いません。 今回入力した式 「年月:format([日付],"yyyy/mm")」 以上、よろしくお願いします。

専門家に質問してみよう