Microsoft Access Club >SampleFile >インデックス >このページ >次頁 < 前項  サイト内検索


年齢を算出:SampleFile034



西暦で年月日を入力すると、入力時の年齢を表示するサンプルファイルを作成しました。実は、年齢の計算自体は簡単なんですが、誕生日以前の取り扱いに少し工夫が必要です。

テーブルの作成

テーブルを以下のように作成します。

ID 氏名 生年月日
1 佐々木健二 1975年10月10日
2 小柳陽子 1978年1月19日
3 片桐理沙 1982年5月9日
4 小林健二 2085年1月1日

12ヶ月未満を切り捨てた経過年 を求めるプロシージャの作成

Function Man_age(年月日) As Integer

    Dim NowBirthday As Date
    
    If IsDate(年月日) Then

        '日付の間隔を計算する DateDiff関数 を用いて"年"を計算します。
        Man_age = DateDiff("yyyy", 年月日, Date)
  
        '今年の誕生日を求めます
        NowBirthday = DateSerial(Year(Date), Month(年月日), Day(年月日))
    
        'もし、今年の誕生日が過ぎていれば求めた 満年齢 から1歳引きます。
        If NowBirthday > Date Then
    
        Man_age = Man_age - 1
    
        End If

    End If
 
End Function

12ヶ月未満の経過月 が求めるプロシージャの作成

Function Month_age(年月日) As Integer

    Dim NowBirthday As Double

    If IsDate(年月日) Then

        NowBirthday = (DateDiff("m", 年月日, Date))

        If (DatePart("d", 年月日) > DatePart("d", Date)) Then
            NowBirthday = NowBirthday - 1
        End If

        If NowBirthday < 0 Then
            NowBirthday = NowBirthday + 1
        End If

        Month_age = NowBirthday Mod 12
  
    End If

End Function

生まれてからの経過日 を求めるプロシージャの作成

Function Keika_day(年月日) As Long

    Dim NowBirthday As Date
 
    If IsDate(年月日) Then

        '日付の間隔を計算する DateDiff関数 を用いて日を計算します。
        Keika_day = DateDiff("d", 年月日, Date)
 
    End If

End Function

テキストボックス入力を備えたフォームの作成

フォームを作成し、日付入力欄テキストボックスを新規に配置します。

日付入力欄テキストボックス更新後処理イベントプロシージャの作成

日付入力欄テキストボックスの更新後処理イベントに、下記プロシージャを記述します。

Private Sub 日付入力_AfterUpdate()

    Select Case Me.日付入力
        Case Is = Null
            MsgBox "データが入力されていませんので、年齢を算出できません。", 16
            Me.日付入力 = ""
        Case Is > Date
            MsgBox "対象データが未来日付ですので、年齢を算出できません。", 16
            Me.日付入力 = ""
        Case Else
            Me.年齢表示 = "あなたの年齢は" & Man_age([日付入力]) & "歳" & _
                          Month_age([日付入力]) & "ヶ月です"
            Me.日数表示 = "生誕から今日まで" & Keika_day([日付入力]) & _
                          "日経過しています"

            DoCmd.Requery "年齢表示"
            DoCmd.Requery "日数表示"
    End Select

End Sub
動作確認
  1. フォームビューで開きます。
  2. 日付入力欄テキストボックスに誕生年月日を入力します。

  1. Enterキーを押します。
  2. 以下のように年齢等が表示されます。(操作日 : 2005/07/16)

連結フォームの作成

tbl_sampleテーブルをレコードソースに持つフォームを作成します。

フォームの読み込み時イベントプロシージャの作成

テーブルをレコードソースにしたフォームの場合は、以下のように記述します。

Private Sub Form_Load()

    Select Case Me.生まれた日
        Case Is = Null
            MsgBox "データが入力されていませんので、年齢を算出できません。", 16
            Me.年齢表示 = ""
            Me.日数表示 = ""
        Case Is > Date
            MsgBox "対象データが未来日付ですので、年齢を算出できません。", 16
            Me.年齢表示 = ""
            Me.日数表示 = ""
        Case Else
            Me.年齢表示 = "あなたの年齢は" & Man_age([生まれた日]) & "歳" & _
                          Month_age([生まれた日]) & "ヶ月です"
            Me.日数表示 = "生誕から今日まで" & Keika_day([生まれた日]) & _
                          "日経過しています"
            DoCmd.Requery "年齢表示"
            DoCmd.Requery "日数表示"
    End Select

End Sub
フォームのレコード移動時イベントプロシージャの作成
Private Sub Form_Current()

    Call Form_Load 'ページが移動するたびに、Form_Loadイベントが呼び出されます。

End Sub
動作確認
  1. フォームビューで開きます。
  2. 以下のように年齢等が表示されます。

関連ページ

ページの先頭へ 前ページへ戻る

 


年齢を算出:SampleFile034


 

-Microsoft Access Club-