• ベストアンサー

Access2013 生年月日から年令自動表示方法

Access2013で、生年月日のフィールドを基に、今日付けの年令を自動的に表示させるフィールドの設定方法を教えて下さい。宜しくお願いします。

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

  • ベストアンサー
  • m3_maki
  • ベストアンサー率64% (296/460)
回答No.5

No.2 です。 > 誕生日を、昭和00年00月00日 と入力してあるのですが フィールドが 「日付時刻型 」なら、 書式の問題だけで、フィールドの値は変わりませんから、 そのままの式が使えます。 フィールドが 「テキスト型」 なら、 日付として認識できる文字列が入っている限りはそのままで動作しますが 空文字列、あるいは 2月30日 など、有り得ない日付が入力されている可能性が排除できないので その場合のエラーを避けるような式が必要になります。 年齢: IIf(IsDate([生年月日]),DateDiff("yyyy",[生年月日],Date())+(Format([生年月日],"mmdd")>Format(Date(),"mmdd")),Null)

hasegawa-t
質問者

補足

出来ました。テーブルのフィールドに直接設定する方法があれば教えてください。宜しくお願いします。

その他の回答 (5)

  • m3_maki
  • ベストアンサー率64% (296/460)
回答No.6

No.5 です。 > テーブルのフィールドに直接設定する方法があれば教えてください。 私は 2007 ですので試したことはありませんが。 Access 2010 のテーブル デザインで集計列を使用する https://msdn.microsoft.com/ja-jp/library/office/ff945943(v=office.14).aspx 手順のところに書かれている内容を十分理解することをお勧めします。 余計なことかもしれませんが 自分だけが使う場合には何でもありですが 他の人がメンテする場合など トラブルが発生することも有り得るので テーブルで、というのは個人的にはお勧めできません。 自分はルックアップフィールドも使いません。

回答No.4

【お詫びのお詫び】「重大なミス!」は勘違いでした。 添付図のように、ちゃんと誕生日の前日に歳を加算できていました。なお、法令に基づく年齢計算ではなく誕生日で加算する場合には dteToday = DateAdd("d", 1, dteToday) の1行は不要です。

回答No.3

【お詫び】GetAge()関数は、重大なミスを犯していましたので撤回します。

  • m3_maki
  • ベストアンサー率64% (296/460)
回答No.2

本家 Microsoft の方法はこちら。 生年月日から年齢を計算する方法 http://support.microsoft.com/kb/881380/JA 多少、冗長なところもあるので。より簡単に。 上記と同じ結果を返します。 年齢: DateDiff("yyyy",[生年月日],Date())+(Format([生年月日],"mmdd")>Format(Date(),"mmdd"))

hasegawa-t
質問者

補足

誕生日を、昭和00年00月00日 と入力してあるのですが、この場合はどうしたらよいのでしょう。関数がわからないので、よろしくお願いします。

回答No.1

私なら、添付図のようにユーザー関数を利用します。 Public Function GetAge(ByVal dteBirthday As Date, ByVal dteToday As Date) As Integer   Dim lngValue_1 As Long   Dim lngValue_2 As Long      dteToday = DateAdd("d", 1, dteToday)   lngValue_1 = Format(dteToday, "yyyy") * 10000 + Format(dteToday, "mm") * 100 + Format(dteToday, "dd")   lngValue_2 = Format(dteBirthday, "yyyy") * 10000 + Format(dteBirthday, "mm") * 100 + Format(dteBirthday, "dd")   GetAge = Fix((lngValue_1 - lngValue_2) / 10000) End Function SELECT ID, 生年月日, GetAge([生年月日],date()) AS 年齢 FROM テーブル2;

関連するQ&A