• ベストアンサー

ACCESSで生年月日より年齢を出す方法は?

datediff関数を使うとなんとか近い物がでてくるのですが、アクセスで年齢の表示を「28歳と11ヶ月です。」というような表現でフォーム上に表示させたりするにはどういった手法をとれば宜しいでしょうか? それから組み込み関数でDATEDIFFを組み込むと DateDiff (<interval>, <date1>, <date2>, <firstweekday>, <firstweek>) っというように表示されますが、各々にはどういった処置をすればいいのかどなたか教えて下さい。 アドバイスの程宜しくお願いします。

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

  • ベストアンサー
  • ja7awu
  • ベストアンサー率62% (292/464)
回答No.3

#1さんの方法では、2003/11/30 に生まれた人が、2003/12/1 になると 1日より経っていないのに、もう1ヶ月 となってしまいます。 そのように起算するなら、この方法で良いでしょう。 しかし、通常の数え方のように誕生日(ここでは日にち)を迎えていない場合に -1 して計算する場合は、次のようにすると良いでしょう。 ユーザー定義関数にしました。 使い方は、「モジュール」の「新規作成」に下記コードを貼り付けます。 クエリで使用する場合は、  年齢:NenreiYM([生年月日]) フォーム等で非連結コントロールに計算式として使用する場合、  =NenreiYM([生年月日]) のように設定します。 Function NenreiYM(BirthYMD As Date) As String   Dim M As Integer   M = DateDiff("M", BirthYMD, Date) + (Day(Date) < Day(BirthYMD))   NenreiYM = M \ 12 & "歳" & M Mod 12 & "ヶ月" End Function

hikari_tai
質問者

お礼

ずばり的中という解答をありがとうございました。

その他の回答 (2)

  • MovingWalk
  • ベストアンサー率43% (2233/5098)
回答No.2

年齢計算については、#1さんの回答でよろしいかと思います。 DateDiff関数の使い方は、Accessのヘルプでキーワードに「DateDiff」を 指定すると、詳しく説明されていますのでご覧ください。 また、使用例も載っていますので参考になると思います。 (ヘルプも役に立ちますので活用されるといいと思います) intervalには、差をどういう単位で計算するかを文字列で指定します。 年単位なら"yyyy"、月単位なら"m"、日単位なら"d"などです。 date1, date2には処理する日付を指定します。年齢計算は現在との差ですので、 一方をnow()に指定してください。 <firstweekday>, <firstweek>は省略可能です。詳しくはヘルプをご覧ください。

hikari_tai
質問者

お礼

datediffに関して多少理解できてきました。 有難う御座いました。

回答No.1

Dim m As Integer Dim b As Date b = #19??/??/??# '生年月日 m = DateDiff("m", b, Now) MsgBox(m \ 12 & "歳" & m Mod 12 & "ヶ月") のような感じで計算できます。 (実際には、テキストボックスかラベルにセットすればよいと思います。)

hikari_tai
質問者

お礼

アドバイス有難う御座いました。

関連するQ&A