• ベストアンサー

Access 生年月日19900205から年令

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

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

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

年令: Year(Date())-Left([生年月日],4)+(Format(Date(),'mmdd')<Right([生年月日],4)) とか。

hasegawa-t
質問者

お礼

ありがとうございました。クエリの初心者の私でもできました。また、宜しくお願いします。 クエリの種類/選択 フィールド/ 年令: Year(Date())-Left([生年月日],4)+(Format(Date(),'mmdd')<Right([生年月日],4)) テーブル/空欄

その他の回答 (5)

回答No.5

GetAge()と過去のベストアンサーでは戻り値が異なります。いわゆる、XXXX/02/29 生まれの年齢計算に対応しているかどうかの差です。

  • chayamati
  • ベストアンサー率41% (260/624)
回答No.4

既に回答が出ています。 http://okwave.jp/qa/q3175119.html のベストアンサーが参考になります。

参考URL:
http://okwave.jp/qa/q3175119.html
回答No.3

SQLビュー: SELECT 生年月日, GetAge(Format([生年月日],"@@@@/@@/@@"),Date()) AS 年齢 FROM テーブル3; デザインビュー: 添付図。 添付のデザインビューは、冒頭のSQL文を生成します。 PS、GetAge()の書き方は一つではない。 どういう書き方があるのかを調べて自分なりのそれを手中にされることをお薦めします。「聞いたことを真似て、そして捨てる!」-の捨てるが大事です。

回答No.2

× Public Function GetAge(ByVal dteBirthday As Date, ByVal dteToday As Date, Optional isSeiki As Boolean = True) As Integer 〇 Public Function GetAge(ByVal dteBirthday As Date, ByVal dteToday As Date) As Integer 失礼。正規計算と非正規計算の両方をサポートしたつもりでしたが・・・。片方のみでした。よって、宣言部を訂正して下さい。もちろん、第三引数は無用です。

回答No.1

Q、今日付けの年令を求めるには? A、私ならば、以下の年齢計算関数を用います。 Public Function GetAge(ByVal dteBirthday As Date, ByVal dteToday As Date, Optional isSeiki As Boolean = True) As Integer   Dim intAge   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")   intAge = Fix((lngValue_1 - lngValue_2) / 10000)   GetAge = intAge End Function 3つめの引数に False を指定すると法令を無視した年齢を返します。何も指定しないと法令に基づいた年齢を返します。この関数の利用方法は、添付図を参照してください。

hasegawa-t
質問者

補足

いつもありがとうございます。 年齢計算関数を書き入れるは、どこか教えてください。クエリも初心者です。 よろしくお願いします。

関連するQ&A