プロが教えるわが家の防犯対策術!

datediff関数を使うとなんとか近い物がでてくるのですが、アクセスで年齢の表示を「28歳と11ヶ月です。」というような表現でフォーム上に表示させたりするにはどういった手法をとれば宜しいでしょうか?

それから組み込み関数でDATEDIFFを組み込むと

DateDiff (<interval>, <date1>, <date2>, <firstweekday>, <firstweek>)

っというように表示されますが、各々にはどういった処置をすればいいのかどなたか教えて下さい。

アドバイスの程宜しくお願いします。

A 回答 (3件)

Dim m As Integer


Dim b As Date

b = #19??/??/??# '生年月日
m = DateDiff("m", b, Now)
MsgBox(m \ 12 & "歳" & m Mod 12 & "ヶ月")

のような感じで計算できます。
(実際には、テキストボックスかラベルにセットすればよいと思います。)
    • good
    • 0
この回答へのお礼

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

お礼日時:2003/12/07 20:30

年齢計算については、#1さんの回答でよろしいかと思います。



DateDiff関数の使い方は、Accessのヘルプでキーワードに「DateDiff」を
指定すると、詳しく説明されていますのでご覧ください。
また、使用例も載っていますので参考になると思います。
(ヘルプも役に立ちますので活用されるといいと思います)

intervalには、差をどういう単位で計算するかを文字列で指定します。
年単位なら"yyyy"、月単位なら"m"、日単位なら"d"などです。
date1, date2には処理する日付を指定します。年齢計算は現在との差ですので、
一方をnow()に指定してください。
<firstweekday>, <firstweek>は省略可能です。詳しくはヘルプをご覧ください。
    • good
    • 0
この回答へのお礼

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

お礼日時:2003/12/07 20:29

#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
    • good
    • 0
この回答へのお礼

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

お礼日時:2003/12/01 00:10

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!