- ベストアンサー
ACCESSで生年月日より年齢を出す方法は?
datediff関数を使うとなんとか近い物がでてくるのですが、アクセスで年齢の表示を「28歳と11ヶ月です。」というような表現でフォーム上に表示させたりするにはどういった手法をとれば宜しいでしょうか? それから組み込み関数でDATEDIFFを組み込むと DateDiff (<interval>, <date1>, <date2>, <firstweekday>, <firstweek>) っというように表示されますが、各々にはどういった処置をすればいいのかどなたか教えて下さい。 アドバイスの程宜しくお願いします。
- みんなの回答 (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
その他の回答 (2)
- MovingWalk
- ベストアンサー率43% (2233/5098)
年齢計算については、#1さんの回答でよろしいかと思います。 DateDiff関数の使い方は、Accessのヘルプでキーワードに「DateDiff」を 指定すると、詳しく説明されていますのでご覧ください。 また、使用例も載っていますので参考になると思います。 (ヘルプも役に立ちますので活用されるといいと思います) intervalには、差をどういう単位で計算するかを文字列で指定します。 年単位なら"yyyy"、月単位なら"m"、日単位なら"d"などです。 date1, date2には処理する日付を指定します。年齢計算は現在との差ですので、 一方をnow()に指定してください。 <firstweekday>, <firstweek>は省略可能です。詳しくはヘルプをご覧ください。
お礼
datediffに関して多少理解できてきました。 有難う御座いました。
- tsukasa-12r
- ベストアンサー率65% (358/549)
Dim m As Integer Dim b As Date b = #19??/??/??# '生年月日 m = DateDiff("m", b, Now) MsgBox(m \ 12 & "歳" & m Mod 12 & "ヶ月") のような感じで計算できます。 (実際には、テキストボックスかラベルにセットすればよいと思います。)
お礼
アドバイス有難う御座いました。
お礼
ずばり的中という解答をありがとうございました。