リンクユニット

Google検索

Office 2019 Access 2019

生年月日から計算式を使ってテキストボックスに年齢を表示する

投稿日:2020年6月4日 更新日:

Accessのフォームに非連結のテキストボックスを追加して、そこに生年月日の日付から[DateDiff関数]を使って年齢を求めて表示します。Excelでは、簡単に求められることでも、Accessでは少し工夫しなければならないこともあります。

また、生年月日の書式を和暦表示にする方法や、生年月日を入力するときにミスなく入力できるようにする設定も解説します。

生年月日から年齢を割り出して表示する_Accessのフォーム

参考ここでは[ドキュメントウィンドウオプション]で[ウィンドウを重ねて表示する]を選択しています。[ウィンドウを重ねて表示する]と[タブ付きドキュメント]の違いについては、以下の記事で解説しています。

[タブ付きドキュメント]と[ウィンドウを重ねて表示する]の違い

Access2007以降、オブジェクトを表示すると、タブ付きウィンドウで表示されるようになっています。従来からAccessを使用している方に ...

続きを見る

テーブルの確認

フォームの元になるテーブルは、以下で作成したものと同じです。

以下の記事では、タブ付きフォームの作成方法を解説しています。

タブコントロールを使用したタブ付きフォームの作成

Accessでは、タブコントロールを使ってタブ付きのフォームを簡単に作成することができます。 例えば、テーブルにフィールドが多く、それを一つ ...

続きを見る

[生年月日]のフィールドを追加します。データ型は、[日付/時刻型]です。

テーブルのデザインビュー[生年月日]フィールドを追加

フォームに[生年月日]コントロールを追加

作成済みのフォームをデザインビューで開いて、[生年月日]コントロールを追加します。

[デザイン]タブの[ツール]グループにある[既存のフィールドの追加]をクリックして、[生年月日]をドラッグで追加します。

フォームに[生年月日]フィールドを追加

フォームビューに切り替えて、生年月日の書式を確認します。

フォームビューに切り替えて表示

日付の書式を変更

日付の書式を変更したい場合は、[生年月日]のテキストボックスを選択して、[デザイン]タブの[プロパティシート]をクリックして、プロパティを開きます。

プロパティは、[F4]キーを押しても表示できます。

[書式]タブの[書式]の▼ボタンをクリックすると、7つの選択肢がありますので、目的のものを選択します。

日付の書式変更

ここでは、[日付(L)]を選択します。

書式に[日付(L)]を選択

フォームビューに切り替えると、以下のように生年月日の書式が変更されたことが確認できます。

フォームビューに切り替えて確認

参考日付の書式は、テーブルで設定することもできます。先にテーブルで書式を設定してフォームを作成すると、テーブルの書式を継承しますが、フォームでは別の書式にすることもできます。

以下は、テーブルをデザインビューで開いて、[生年月日]フィールドを選択しています。フィールドプロパティの[書式]から設定できます。

テーブルのデザインビューで書式設定

日付の書式は、テーブルをデータシートビューに切り替えても変更できます。

テーブルのデータシートビューで書式を変更

日付の書式

日付の書式は、プルダウンメニューから選択できる書式以外に、以下の文字を使って指定することもできます。以下は、一部です。

文字 意味 サンプル
yyyy 4ケタの西暦 2020
yy 2ケタの西暦 20
ggg 年号 令和
gg 漢字一字の年号
e 和暦 1
mm 2ケタの月 05
m 5
dd 2ケタの日 07
d
aaa 曜日1文字
aaaa 曜日 火曜日

非連結のテキストボックスに和暦を表示

例えばフォームに生年月日の和暦表示も追加したいのであれば、非連結のテキストボックスを追加して和暦を表示します。

[デザイン]タブの[コントロール]グループにある[テキストボックス]を選択して、[Ctrl]キーを押しながらドラッグします。

[テキストボックスウィザード]が表示されたら、[キャンセル]ボタンを押して閉じます。

参考[Ctrl]キーを押しながらドラッグすると、ラベルは挿入されず、テキストボックスのみが挿入されます。

非連結のテキストボックスを追加

テキストボックスを選択してプロパティを開きます。

[データ]タブの[コントロールソース]に[生年月日]を選択します。

プロパティのコントロールソースに[生年月日]を選択

[書式]タブの[書式]に以下のように入力します。入力するときは、\は省いても構いません。

ggge\年m\月d\日

プロパティで書式を設定

フォームビューに切り替えると以下のように表示されます。

フォームビューで書式が変更されたテキストボックスを確認

テキストボックスに年齢を表示

フォームのデザインビューに非連結のテキストボックスを表示します。

ここでは、ラベルも表示したいので、そのままドラッグします。

[テキストボックスウィザード]が表示されたら、[キャンセル]ボタンを押して閉じます。

非連結のテキストボックスを追加

ラベルは、[年齢]と表示します。

非連結のテキストボックスを選択して、プロパティの[データ]タブを表示します。

[コントロールソース]の[...]ボタンをクリックします。

[コントロールソース]の[...]ボタンをクリック

以下のように式ビルダーが表示されます。

そして、以下の計算式を入力します。入力したら、[OK]ボタンをクリックします。

=DateDiff("yyyy",[生年月日],Date())-IIf(DateSerial(Year(Date()),Month([生年月日]),Day([生年月日]))>Date(),1,0)

式ビルダーに計算式を入力

フォームのコントロールソースに数式が表示されています。

参考テキストボックスの名前は、プロパティの[その他]タブの[名前]で変更できます。ここでは、[年齢]としています。

プロパティのコントロールソース

フォームビューに切り替えると、年齢が表示されます。

フォームビューに切り替えて年齢が表示されたことを確認

参考Excelでは、DATEDIF関数を使って簡単に求められるのですが、AccessのDateDiff関数で満年齢の表示にするのは、ちょっと面倒ですね。

ExcelのDATEDIF関数

[年齢]テキストボックスに[歳]を表示したい場合の書式設定

もし、年齢のテキストボックスに以下のように[歳]も表示したい場合は、プロパティで書式を変更します。

年齢のテキストボックスに[歳]を表示

テキストボックスのプロパティを表示して、[書式]タブの[書式]に[0\歳]と入力します。入力するときは、\は省いても構いません。

テキストボックスの書式設定

クエリで年齢を表示したい時

もし、クエリで年齢を表示したい場合は、以下のようにします。

テーブルをもとにクエリを作成して、[生年月日]のとなりのフィールドで右クリックして、[ビルド]をクリックします。

クエリのフィールドで右クリック

[式ビルダー]が表示されます。

ここに以下のように入力します。計算式は、フォームのテキストボックスで入力したものと同じです。[OK]ボタンをクリックします。

年齢: DateDiff("yyyy",[生年月日],Date())-IIf(DateSerial(Year(Date()),Month([生年月日]),Day([生年月日]))>Date(),1,0)

クエリの式ビルダー

[年齢]フィル―ドのセルに、計算式が表示されています。

直接入力してもいいのですが、数式が長い場合は[式ビルダー]を表示すると入力しやすいと思います。

クエリのデザインビュー

クエリを実行して確認してみると、以下のように表示されます。

クエリで年齢フィールドを追加した場合は、フォームではクエリをもとに作成します。

クエリのデータシートビュー

計算式(DateDiff・IIF・DateSerial)について

DateDiff関数は、2つの日付の差を求めます。

DateDiff(単位,日時1,日時2)

DateDiff 関数 - Access(Microsoft)

DateDiff("yyyy",[生年月日],Date())

上記は、[生年月日]と今日の日付[Date()]の差を求めて、年["yyyy"]で表示するという意味です。

 

DateSerial関数は、年月日から日付を返す関数です。

DateSerial(year, month, day)

DateSerial 関数 - Access(Microsoft)

DateSerial(Year(Date()),Month([生年月日]),Day([生年月日])

上記は、今年の誕生日を求めています。

 

IIF関数は、条件を判断して値を返します。

IIF(条件,条件が合う場合,条件が合わない場合)

IIf 関数 - Access(Microsoft)

IIf(DateSerial(Year(Date()),Month([生年月日]),Day([生年月日]))>Date(),1,0)

今年の誕生日が今日の日付より大きければ1を返して、そうでなければ0を返します。

新規入力フォームで[#Type!]と表示されないように修正

上記の計算式のまま、新規入力フォームを開くと、年齢のテキストボックスは、[#Type!]と表示されてしまいます。

[#Type!]と表示された新規入力フォーム

これは、[生年月日]が入力されていないためです。

このエラーを表示しないようにするには、計算式を以下のように変更します。これで、[生年月日]がNullならばNullを返します。

IsNull 関数 - Access(Microsoft)

=IIf(IsNull([生年月日]),Null,DateDiff("yyyy",[生年月日],Date())-IIf(DateSerial(Year(Date()),Month([生年月日]),Day([生年月日]))>Date(),1,0))

[#Type!]が消えた新規入力フォーム

入力のミスを防ぐために[定型入力]を使用

フォームで生年月日を入力するのであれば、以下のように[生年月日]のテキストボックスにカーソルを置いたときに、以下のように表示されると桁を間違えることがなくなります。

定型入力を設定したフォームのテキストボックス

[生年月日]のテキストボックスのプロパティを開いて、[データ]タブの[定型入力]にある[...]ボタンをクリックします。

プロパティの[定型入力]の[...]ボタンをクリック

[定型入力ウィザード]が表示されます。

ここでは、[日付(S)]を選択します。[次へ]ボタンをクリックします。

[テスト]ボックスでテストもできますので、いろいろ試してみてください。

[定型入力ウィザード]-1/3

ここでは、[代替文字]も選択できます。テストで確認して問題がなければ、[OK]ボタンをクリックします。

[定型入力ウィザード]-2/3

[完了]ボタンをクリックします。

[定型入力ウィザード]-完了

プロパティには、以下のように表示されます。

0000/00/00;0;_

プロパティの[定型入力]

入力を間違えると、エラーメッセージが表示されます。

エラーメッセージ

参考データ型で[日付/時刻型]を選択した場合、既定で[日付選択カレンダー]が表示されるようになっています。

日付選択カレンダー

便利な場合もありますが、不要な場合は、プロパティの[書式]タブにある[日付選択カレンダーの表示]で[なし]を選択すると非表示になります。

また、[定型入力]などで設定すると、カレンダーは非表示になります。

プロパティの[書式]タブにある[日付選択カレンダーの表示]

入力規則に違反した時はエラーメッセージを出す

もし、生年月日に今日の先の日付を入力されたら、メッセージを出して修正してもらうようにしたいと思います。

[生年月日]のプロパティを表示します。

[データ]タブの[入力規則]にある[...]ボタンをクリックして、[式ビルダー]を表示して入力してもいいですが、短い場合は直接入力しても構いません。

プロパティの[入力規則]

ここでは、以下のように直接入力しています。今日の日付以下でなければいけませんよ、という意味ですね。

<=Date()

入力規則に数式を入力

[エラーメッセージ]には、入力規則に違反したときに表示したい内容を入力します。

ここでは、[日付を確認してください。]と入力します。

エラーメッセージの入力

フォームに切り替えて、エラーメッセージが出るかどうかを確認してみます。

エラーメッセージウィンドウの確認

参考[定型入力]や[入力規則]などの設定は、テーブルでも行うことができます。

テーブルで入力されることが多いのであれば、テーブルで設定されることをお勧めします。テーブルで設定したものは、フォームを作成した時もそのまま継承されます。

テーブルのデザインビュー

Profile

執筆者/はま

バージョンの確認

おすすめ記事と広告

-Office 2019 Access 2019

Copyright © 2001-2020 初心者のためのOffice講座 All Rights Reserved.

Copyright© 初心者のためのOffice講座 , 2020 AllRights Reserved Powered by AFFINGER4.