本ページは公開が終了した情報の複製であり、掲載時点での情報です。本ページに記載されている内容について各所に問い合わせることはご遠慮下さい。
サポート技術情報

[ACC1/2]生年月日から年齢を計算する方法

文書番号: 401946

最終更新日: 1997/11/01


この資料は以下の製品について記述したものです。

この記事は、以前は次の ID で公開されていました: JP401946

概要

生年月日から現在の年齢を計算するためには、"既存の関数を利用する方法" と"ユーザー定義関数" を定義する方法があります。ここでは、その使用例を紹介します。

現象

■ 既存の関数を利用する方法

Access の関数を直接、クエリーの中で利用する時の使用例です。
この関数は、フォーム、レポート等でもご利用になれます。
  1. 「年齢表」テーブルを作成します。テーブル デザインで次のように定義します。
          フィールド名    データ型
          --------------  ------------
          氏名            テキスト型
          誕生日          日付/時刻型
    
  2. 作成したテーブルを元に、クエリーを定義します。
  3. QBE グリッドのフィールド行に、テーブルの中から表示したいフィールドと[年齢] フィールドを追加します。
         フィールド行
         ------------
         年齢: IIf(Right(Format([年齢表]![誕生日],"yyyy/mm/dd"),5)>
               Mid(Format(Now(),"yyyy/mm/dd"),6,5),DateDiff("yyyy",
               [年齢表]![誕生日],Now())-1,DateDiff("yyyy",[年齢表]!
               [誕生日],Now()))
    
  4. 表示をデータシート ビューに換えると、追加された [年齢] フィールドの計算結果が確認できます。

■ ユーザー 定義関数を作成する方法

既存の関数では不都合な時は、モジュール オブジェクトを使って Function プロシージャを定義してください。次の記述は、生年月日から現在の年齢を経過年数と経過月数で割り出すためのユーザ定義関数 (Function プロシージャ) のサンプルです。
  関数名: Age()
  使用目的:生年月日から現在までの経過年数の計算
  引き数: StartDate (例:誕生日等)
  戻り値: 年齢 (経過年数)
  ------------------------------------------------------------------------
  Function Age (varBirthDate As Variant)
      Dim varAge As Variant
      If IsNull(varBirthdate) Then
          Age = 0
          Exit Function
      End If
      varAge = DateDiff("yyyy", varBirthDate, Now)
      If Date < DateSerial(Year(Now),Month(varBirthDate),Day(varBirthDate)) Then
          varAge = varAge - 1
      End If
      Age = varAge
  End Function
  ------------------------------------------------------------------------
  関数名: AgeMonths()
  使用目的:最後の誕生日から現在の経過月数を計算します。
           本日が誕生日の時は、月数にゼロを返します。
  引き数: StartDate (例:誕生日等)
  戻り値: 最後の誕生日以降の経過月数
  ------------------------------------------------------------------------
  Function AgeMonths(ByVal StartDate As String)
      Dim tAge As Double
      tAge = (DateDiff("m", StartDate, Now))
      If (DatePart("d", StartDate) > DatePart("d", Now)) Then
          tAge = tAge - 1
      End If
      If tAge < 0 Then
          tAge = tAge + 1
      End If
      AgeMonths = tAge Mod 12
  End Function
  ------------------------------------------------------------------------
なお、作成したユーザー 定義関数は、クエリー、フォーム、レポート等でご利用になれます。
以下にフォームでの使用例を記述します。
  1. [年齢リスト] テーブルを作成します。テーブル デザインで、次のように定義します。
          フィールド名    データ型
         --------------  ------------
         氏名            テキスト型
         誕生日          日付/時刻型
    
  2. 作成したテーブルを元にフォームを作成し、デザイン ビューで開きます。
  3. ラベルとテキスト ボックスを追加し、テキスト ボックスの [コントロール ソース]プロパティを次のように設定します。
           =Age([誕生日]) & " 歳 " & AgeMonths([誕生日]) & "ヶ月"
    
  4. フォーム ビューに切り換えると、追加されたテキスト ボックスに、生年月日から現在までの経過年月日 (年齢) が表示されます。

注意

なお、利用方法を理解していただくためのサンプルプログラムですので、機能強化、改良に関するご質問につきましてはご遠慮ください。

詳細

本文に関する操作の詳細は、次の参照先の説明をご覧ください。

Access 1.1 の場合

  • クエリーの定義、操作の概要について
         『 Microsoft Access ユーザーズ ガイド』
             第 2 部 クエリー      5 クエリーの概要               P111 ~ P137
    
  • クエリーで使用した関数について
         『 Microsoft Access リファレンス』
             IIF 関数                                           P345 ~ P346
             Right 関数                                         P397 ~ P398
             Datediff 関数                                      P291 ~ P292
             Format 関数                                        P334 ~ P341
             Now 関数                                           P379
    
  • モジュール、プロシージャに関数ついて 『 Access Basic プログラミング ガイド』各章をご覧ください。
  • フォームに関数を設定する方法、プロパティの詳細について
         『 Microsoft Access ユーザーズ ガイド』
             第 3 部 フォーム       9 フォームの作成              P247 ~ P314
                                 11 フォームでの式の使用        P335 ~ P344
    

Access 2.0 の場合

  • クエリーの定義、操作の概要について
         『 ユーザーズ ガイド』
             第 3 部 クエリー      10 クエリーの概要              P219 ~ P250
    
  • クエリーで使用した関数について
         『 リファレンス』
             IIF 関数                                           P264 ~ P265
             Right 関数                                         P446 ~ P447
             Datediff 関数                                      P128 ~ P131
             Format 関数                                        P223 ~ P232
             Now 関数                                           P349
    
  • モジュール、プロシージャに関数ついて 『アプリケーション開発 ガイド』各章をご覧ください。
  • フォームに関数を設定する方法、プロパティの詳細について
         『 ユーザーズ ガイド』
             第 4 部 フォーム       15 フォームの作成             P373 ~ P413
                                  18 フォームでの式の使用       P493 ~ P507
    

Keywords: KBHOWTO KB401946
Technology: kbAccess200 kbAccessSearch

inserted by FC2 system